什么是执行计划
执行计划,就是一条SQL语句,在数据库中实际执行的时候,一步步的分别都做了什么事情
EXPLAIN命令是查看查询优化器是如何决定执行查询的主要方法,从它的查询结果中我们可以知道:
- 一个SQL语句每一步是如何执行的;
- 都做了哪些事,分为哪几步;
- 有没有用到索引;
- 哪些字段用到了什么样的索引,是否有一些可优化的地方等。
查看执行计划,只需在查询中的SELECT关键字之前增加EXPLAIN即可
语法:EXPLAIN + SELECT查询语句
示例:EXPLAIN SELECT * FROM `user`
使用EXPLAIN时,会返回执行计划中每一步的信息,它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序。
EXPLAIN SELECT * FROM `user`
执行计划中的列
Id
id是一个编号,用于标识SELECT查询的序列号,表示执行SQL查询过程中SELECT子句或操作表的顺序。
- 如果在SQL语句中没有子查询或关联查询,那么id列为1
- 否则,内层的SELECT语句一般会顺序编号;
Id列可能会存在三种情况,以下一一列举:
Id相同
只有普通的查询,没有子查询,则Id相同为1
EXPLAIN SELECT * FROM `user`,`comment` WHERE `comment`.user_id = `user`.id
Id不同
存在子查询,id的序号会递增,id值越大优先级越高,越先被执行。
EXPLAIN SELECT * FROM `user` WHERE id =
(SELECT user_id FROM `comment` WHERE entity_type = 2 LIMIT 1)
Id相同和不同
id如果相同,认为是一组,从从上往下执行。
在所有组中,id值越大,优先级越高,越先执行。
EXPLAIN SELECT * FROM `user` WHERE id IN
(SELECT user_id FROM `comment` WHERE entity_type = 2 )
select_type列
select_type列表示对应行的查询类型,是简单查询还是复杂查询
partitions
- 查询涉及到的分区。
下一篇