EXPLAIN + SQL语句

1. id
- id不同,id值大的先执行
- id相同,执行顺序从上到下
2. select_type(查询类型)
- SIMPLE:简单的select查询,不包含子查询或联合查询
- PRIMARY:复杂查询的最外层查询
- SUBQUERY:被where条件包含了的子查询
- DERIVED:被from修饰的子查询临时表
- UNION:使用union后的select查询
- UNION RESULT:从union表获取结果的select
3. type(访问类型)
优 system > const > eq_ref > ref > range > index > ALL 差
- system:系统表,只有一行记录
- const:只有一条记录匹配(单表主键或唯一键查询)
- eq_ref:只有一条记录匹配(多表联合时的主键或唯一键查询)
- ref:该查询匹配到多条符合条件的记录
- range:该查询匹配到符合范围条件内的记录(between、<、>、in)
- index:遍历索引树进行匹配
- ALL:遍历全表的每条记录
4. key相关
- possible_keys:理论上可能用到的索引
- key:实际中使用的索引,NULL表示索引失效
- key_len:索引中所使用的字节数,越短越好
5. 其他
- table:用到的表
- partitions:匹配的分区
- ref:查询条件中,关联的字段
- rows:检索的行数
- filtered:数据经过滤后,剩下满足条件的记录数所占比例
- Extra:
Using filesort-仅通过索引不能完成想要的排序,必须额外再进行排序操作才能完成查询
Using index-表示优化器使用了覆盖索引
6. 索引
主键索引(聚集索引):叶节点保存记录
辅助索引(非聚集索引、二级索引):叶节点保存主键(书签)和索引字段
覆盖索引:当某个查询通过辅助索引就可以获得需要的查询结果,就不需要再去聚集索引查询记录(即不回表)
本文详细解析了EXPLAIN SQL语句的执行计划,包括查询类型、访问类型、索引使用情况等关键信息,并介绍了如何通过这些信息来优化SQL查询。
664

被折叠的 条评论
为什么被折叠?



