https://mp.weixin.qq.com/s/Qq-d3s07BmDa478qcJtQbQ
explain select * from tb_item where id = 1;
type 显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。
字段 | 含义 |
---|---|
id | 是一组数字,代表多个表之间的查询顺序,或者包含子句查询语句中的顺序,id 总共分为三种情况,依次详解1、id 相同,执行顺序由上至下2、id 不同,如果是子查询,id 号会递增,id 值越大优先级越高,越先被执行3、id 相同和不同的情况同时存在 |
select_type | 表示 SELECT 的类型:1、simple:简单的 select 查询,查询中不包含子查询或者 union 查询2、primary:主查询,如果 SQL 语句中包含任何子查询,那么子查询的最外层会被标记为 primary3、subquery:在 select 或者 where 里包含了子查询,那么子查询就会被标记为 subQquery,同三.二同时出现4、derived:在 from 中包含的子查询,会被标记为衍生查询,会把查询结果放到一个临时表中5、union:如果有两个 select 查询语句,他们之间用 union 连起来查询,那么第二个 select 会被标记为 union6、union result:union 的结果被标记为 union result |
table | 表示这一行的数据是哪张表的数据 |
type | 表示表的连接类型,性能由好到差的连接类型为:system —> const —>eq_ref —> ref —>ref_or_null—> index_merge—> index_subquery —>range—> index—> all 1、system:表中只有一行记录,system 是 const 的特例,几乎不会出现这种情况,可以忽略不计2、const:将主键索引或者唯一索引放到 where 条件中查询,MySQL 可以将查询条件转变成一个常量, 只匹配一行数据,索引一次就找到数据了3、eq_ref:类似ref,区别在于使用的是唯一索引,使用主键的关联查询,关联查询出的记录只有一条。常见于主键或唯一索引扫描4、ref:不是主键索引,也不是唯一索引,就是普通的索引,可能会返回多个符合条件的行5、range:体现在对某个索引进行区间范围检索,一般出现在 where 条件中的 between、and、<、>、in 等范围查找中。6、index:将所有的索引树都遍历一遍,查找到符合条件的行。索引文件比数据文件还是要小很多, 所以比不用索引全表扫描还是要快很多。7、all:没用到索引,单纯的将表数据全部都遍历一遍,查找到符合条件的数据 |
possible_keys /ˈpɒsəb(ə)l/ | 此次查询中涉及字段上若存在索引,则会被列出来,表示可能会用到的索引,但并不是实际上一定会用到的索引 |
key | 此次查询中实际上用到的索引 |
key_len | 索引字段的长度 |
rows | 扫描行的数量 |
extra | 执行情况的说明和描述 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。