Extra列是用来说明一些额外信息的,这些额外的信息可以帮助我们更准确的理解Mysql到底如何执行给定的查询语句。
Extra | 描述 |
---|---|
No tables used | 查询语句中没有FROM字句的时候会提示,比如 EXPLAIN SELECT 1 |
Impossible WHERE | 查询字句WHERE的条件永远为FALSE |
No matching min/max row | 查询列表出MIN 或 MAX聚集函数但是没有记录符合搜索条件 |
Using index | 使用覆盖索引/ 全表扫描使用ORDER BY语句 |
Using index condition | 索索条件虽然出现了索引列,但是不能充当边界条件形成扫描区间。比如使用了LIKE |
Using where | 搜索条件需要在server层判断 |
Using join buffer(Block Nexted Loop) | 连接查询的过程中,当被驱动表不能有效的利用索引加快访问速度时,MySQL会为其分配一块名为连接缓冲区的内存块来加快查询速度 |
Using join buffer(Batched Key Access) | 对于多表join语句,当MySQL使用索引访问第二个join表的时候,使用一个join buffer来收集第一个操作对象生成的相关列值 |
Using intersect(...) | 准备使用Intersection索引合并的方式执行查询 |
Using union(...) | 准备使用Union索引合并的方式执行查询 |
Using sort_union(...) | 准备使用sort_union索引合并的方式执行查询 |
Zero limit | limit条件为0 |
Using filesort | 排序操作无法使用到索引,只能在内存或磁盘中进行排序 |
Using temporary | 比如DISTINCT、GROUP BY、UNION等查询过程中,如果不能有效利用索引完成查询,可能会通过建立内部的临时表执行查询 |
Start temporary End temporary | IN子查询转成半连接,执行策略为Duplicate Weedout |
LooseScan | 在将IN子查询转为半连接时,如果采用的是LooseScan执行策略 |
FirstMatch(tablename) | 在将IN子查询转为半连接时,如果采用的是FirstMatch执行策略 |