Mysql Explain 语法详细解析
- 格式:pdf
- 大小:364.34 KB
- 文档页数:9


navicat explain 各个字段的意思
Navicat 是一个强大的数据库管理工具,其中的 explain
命令用于分析查询语句的执行计划。执行计划展示了查询优化器选择的执行查询的方式。 以下是
explain 命令返回的各个字段的一般含义:
1. id:查询的唯一标识符。
2. select_type:指示查询类型,例如 SIMPLE(简单查询),PRIMARY(主查询),SUBQUERY(子查询)等。
3. table:查询中涉及的表名。
4. partitions:表的分区数量(如果适用)。
5. type:表示访问表的方式,例如 ALL(全表扫描),index(索引扫描),range(范围扫描)等。
6. possible_keys:可能用于查询的索引列表。
7. key:实际使用的索引。
8. key_len:索引中使用的字节数。
9. ref:表示可能用于查询的索引列表。
10. rows:估计的返回行数。
11. filtered:百分比形式表示的表扫描操作的选择性。这个值表示在表扫描期间,有多少行满足查询条件。
12. Extra:包含有关查询执行的其他信息,例如使用的连接类型文件排序和临时表等。不同的数据库系统可能会有略微不同的字段和解释。
上述描述适用于常见的 MySQL 查询执行计划。具体字段的含义可能因数据库系统和版本而有所不同。如果你使用的是其他数据库系统,请参考相应的文档以获得更准确的解释。 通过分析 explain
输出,可以了解查询优化器的执行计划,并找出查询中可能存在的性能问题。这有助于优化查询和提高数据库查询的效率。
explain详解
⼀.索引介绍
1.什么是索引
1)索引就好⽐⼀本书的⽬录,它能让你更快的找到⾃⼰想要的内容。2)让获取的数据更有⽬的性,从⽽提⾼数据库检索数据的性能。
2.索引类型介绍
1)BTREE:B+树索引2)HASH:HASH索引3)FULLTEXT:全⽂索引4)RTREE:R树索引
图1·B+tree索引
图2·B*tree索引3.索引管理
索引建⽴在表的列上(字段)的。在where后⾯的列建⽴索引才会加快查询速度。pages<---索引(属性)<----查数据。
1、索引分类:
主键索引普通索引*****唯⼀索引
2、添加索引:
#创建索引
alter table test add index index_name(name);
#创建索引
create index index_name on test(name);
#查看索引
desc table;
#查看索引
show index from table;
#删除索引
alter table test drop key index_name;
#添加主键索引(略)
#添加唯⼀性索引
alter table student add unique key uni_xxx(xxx);
#查看表中数据⾏数
select count(*) from city;
#查看去重数据⾏数
select count(distinct name) from city;3、前缀索引和联合索引
前缀索引
根据字段的前N个字符建⽴索引
alter table test add index idx_name(name(10));
避免对⼤列建索引如果有,就使⽤前缀索引
联合索引多个字段建⽴⼀个索引
例:where a.⼥⽣ and b.⾝⾼ and c.体重 and d.⾝材好index(a,b,c)特点:前缀⽣效特性a,ab,ac,abc,abcd 可以⾛索引或部分⾛索引b bc bcd cd c d ba ... 不⾛索引
mysql查看执行计划
MySQL查看执行计划。
在MySQL数据库中,执行计划是指MySQL数据库系统在执行SQL语句时所选择的执行方式和顺序。通过查看执行计划,我们可以了解MySQL是如何执行我们的SQL查询语句的,从而帮助我们优化查询性能。本文将介绍如何在MySQL中查看执行计划,以及如何根据执行计划进行SQL查询性能优化。
1. 使用EXPLAIN语句查看执行计划。
在MySQL中,我们可以使用EXPLAIN语句来查看执行计划。EXPLAIN语句可以用于SELECT、INSERT、UPDATE和DELETE语句,它将返回一个关于查询执行计划的结果集。下面是一个使用EXPLAIN语句的例子:
```sql。
EXPLAIN SELECT FROM users WHERE age > 18;
```。
执行以上SQL语句后,MySQL将返回一个包含查询执行计划的结果集。在执行计划结果集中,我们可以看到MySQL选择了哪些索引,以及查询的执行顺序等信息。通过分析执行计划,我们可以发现查询语句的性能瓶颈,从而进行优化。
2. 分析执行计划结果。
在查看执行计划的结果集后,我们需要对结果进行分析,以确定是否存在性能问题,并找出可能的优化方案。以下是一些常见的执行计划结果分析要点:
type字段,表示MySQL在查询过程中使用了何种类型的连接。常见的类型有,const(表中仅有一行满足条件)、eq_ref(使用了唯一索引进行等值连接)、ref(使用了普通索引进行等值连接)、range(使用了索引进行范围查找)、index(使用了索引扫描)、all(全表扫描)等。一般来说,type的值越好(如const、eq_ref),性能越好。
key字段,表示MySQL在查询过程中使用了哪个索引。如果key为NULL,则表示MySQL没有使用索引。通过分析key字段,我们可以确定是否需要为查询添加索引,或者调整已有索引。
explain analyze用法
在数据库查询优化中,EXPLAIN 和 ANALYZE 是两个常用的命令,用于分析和优化 SQL 查询。这两个命令通常在 PostgreSQL 数据库中使用,但类似的工具在许多其他数据库系统中也有。
EXPLAIN
EXPLAIN 命令用于显示查询的执行计划。执行计划是数据库如何执行查询的详细步骤。通过查看执行计划,你可以了解查询的效率,找出可能的瓶颈,并优化查询。
例如,假设你有一个简单的查询:
sql
EXPLAIN SELECT * FROM users WHERE age > 30;
这将返回一个描述数据库如何执行此查询的执行计划。
2. ANALYZE
ANALYZE 命令与 EXPLAIN 结合使用,用于收集查询的统计信息。当你运行一个带有 EXPLAIN 的查询时,如果没有先运行 ANALYZE,查询计划可能会基于一些过时的统计信息。通过运行 ANALYZE,你可以更新这些统计信息,使 EXPLAIN 返回的执行计划更准确。
例如:
sql
ANALYZE; -- 更新所有表的统计信息
EXPLAIN SELECT * FROM users WHERE age > 30; -- 基于最新统计信息的查询计划
或者你可以为特定的表收集统计信息:
sql
ANALYZE users; -- 仅更新“users”表的统计信息
使用建议
在优化查询之前,首先使用 EXPLAIN 查看查询的执行计划。
使用 ANALYZE 来确保你查看的是基于最新统计信息的执行计划。
根据执行计划的结果,考虑是否需要重新设计查询、添加或删除索引、调整数据库结构等。
注意
虽然 EXPLAIN 和 ANALYZE 是非常有用的工具,但它们只能提供关于查询如何执行的概览。要深入了解性能问题,可能还需要其他工具和日志文件。