一、导读
对于大部分开发人员来说,平常接触的无非就是增删改查这些基本操作,创建存储过程,视图等等都是 DBA 该干的活,但是想要把这些基本操作写的近乎完美也是一件难事。
而 explain 显示了 MySQL 如何使用索引来处理 select 语句以及连接表。可以通过模拟 mysql 的优化器帮助选择更好的索引和写出更优化的查询语句。
二、explain 能干什么
- 表的读取顺序
- 数据读取操作的操作类型
- 哪些索引可以使用
- 哪些索引被实际使用
- 表之间的引用
- 每张表有多少行被优化器查询
说了这么多使用 explain 的好处,那么实际上到底该怎么玩? 答案: explain + 待执行的sql
从上表中我们看到,通过 explain+sql 执行后,显示了一张列表,那么接下来我们就详细说说这个个列表中各个字段的意思,只有先明确了各个字段的意思,才能知道 sql 的优劣程度。
三、explain 结果解释
id
决定表的读取顺序。
执行 select 语句查询的序列号,包含一组数字,表示查询中执行 select 子句或操作表的顺序
它有三种情况:
1、id相同,执行顺序由上至下;
2、id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行;