简介
- explain命令可以查看SQL语句的执行计划;
- 当explain与SQL语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息,即MySQL解释了它将如何处理语句,包括有关如何联接表以及以何种顺序联接表的信息。
作用
- 分析出表的读取顺序
- 数据读取操作的操作类型
- 哪些索引可以使用
- 哪些索引被实际使用
- 表之间的引用
- 每张表有多少行被优化器查询
使用
- 需要在SQL语句之前加上explain命令即可,除select语句外,explain也能分析insert、update和delete语句。
结果解析
| 参数 | 描述 |
|---|---|
| id | 执行select子句或操作表的顺序 |
| select_type | 查询的类型,如SIMPLE、PRIMARY、SUBQUERY、DERIVED、UNION等 |
| table | 当前行使用的表名 |
| partitions | 匹配的分区 |
| type | 连接类型,如system、const、eq_ref、ref、range、index、all等 |
| possible_keys | 可能使用的索引 |
| key | 实际使用的索引,NULL表示未使用索引 |
| key_len | 查询中使用的索引长度 |
| ref | 列与索引的比较 |
| rows | 扫描的行数 |
| filtered | 选取的行数占扫描的行数的百分比,理想的结果是100 |
| extra | 其他额外信息 |
(参考资料:[explain详解])
知识总结,交流学习,不当之处敬请指正,谢谢!