目录
你是否遇到表加了索引之后,查询执行依旧很慢?是否困惑索引有没有生效?
带着问题,我们来学习下一个MySQL数据库开发者必备的利器--查看执行计划。
查看执行计划方法
1、命令行方式:EXPLAIN + sql
2、界面方式:Navicat 自带
其中比较重要的列有id、type、key、rows、Extra。
各个字段详解
id
表示每一条SQL语句执行计划中表加载的顺序,有如下三种情况:
1、id值相同的时候,自上往下执行;
如上所示,对应表的加载顺序为t1>t3>t2(这里的表为别名)
2、id值不同的时候,id值大的优先执行;
如上所示,,对应表的加载顺序为t3>t2>t1(这里的表为别名)
3、id值相同且存在id值不同的时候,id相同的为一组,自上往下执行,id不同的,id值大的优先执行;
如上所示,,对应表的加载顺序为t3>derived2>t2>t4(这里的表为别名),derived2是id为2这一步产生的衍生表。
select_type
查询的类型,主要是用于区分普通查询、联合查询、子查询等复杂的查询
1、SIMPLE:简单的select查询,查询中不包含子查询或者union
2、PRIMARY:查询中包含任何复杂的子部分,最外层查询则被标记为primary