mysql性能分析之explain的用法
2017-08-21 16:17
671 查看
之前是一直没有听过explain这个关键字的, 最近因为项目中总是会有慢查询的一些操作, 所以请教了旁边的同事帮忙排查下原因, 看到同事用explain来分析一些sql语句, 感觉好像发现了新大陆一样。
于是自己也来学习下并总结自己学到的一些知识,如有问题欢迎拍砖。
首先来做个测试, 我这里有一张表: t_jiakao_keyword, 数据量在60W左右。
1, select * from t_jiakao_keyword
然后使用explain进行各种查询:
通过主键id去查询,其中有几个关键的指标需要关注:
首先看下 type 这列的结果,如果有类型是 ALL 时,表示预计会进行全表扫描(full table scan)。通常全表扫描的代价是比较大的,建议创建适当的索引,通过索引检索避免全表扫描。此外,全索引扫描(full index scan)的代价有时候是比全表扫描还要高的,除非是基于InnoDB表的主键索引扫描。
再来看下 Extra 列的结果,如果有出现 Using temporary 或者 Using filesort 则要多加关注:
Using temporary,表示需要创建临时表以满足需求,通常是因为GROUP BY的列没有索引,或者GROUP BY和ORDER BY的列不一样,也需要创建临时表,建议添加适当的索引。
Using filesort,表示无法利用索引完成排序,也有可能是因为多表连接时,排序字段不是驱动表中的字段,因此也没办法利用索引完成排序,建议添加适当的索引。
Using where,通常是因为全表扫描或全索引扫描时(type 列显示为 ALL 或 index),又加上了WHERE条件,建议添加适当的索引。
暂时想到上面几个,如果有遗漏,以后再补充。
其他状态例如:Using index、Using index condition、Using index for group-by 则都还好,不用紧张。
最后放出所有字段的一些说明及含义。sql查询最重要的是合理使用索引, 关键点还是在索引!
于是自己也来学习下并总结自己学到的一些知识,如有问题欢迎拍砖。
首先来做个测试, 我这里有一张表: t_jiakao_keyword, 数据量在60W左右。
1, select * from t_jiakao_keyword
然后使用explain进行各种查询:
通过主键id去查询,其中有几个关键的指标需要关注:
首先看下 type 这列的结果,如果有类型是 ALL 时,表示预计会进行全表扫描(full table scan)。通常全表扫描的代价是比较大的,建议创建适当的索引,通过索引检索避免全表扫描。此外,全索引扫描(full index scan)的代价有时候是比全表扫描还要高的,除非是基于InnoDB表的主键索引扫描。
再来看下 Extra 列的结果,如果有出现 Using temporary 或者 Using filesort 则要多加关注:
Using temporary,表示需要创建临时表以满足需求,通常是因为GROUP BY的列没有索引,或者GROUP BY和ORDER BY的列不一样,也需要创建临时表,建议添加适当的索引。
Using filesort,表示无法利用索引完成排序,也有可能是因为多表连接时,排序字段不是驱动表中的字段,因此也没办法利用索引完成排序,建议添加适当的索引。
Using where,通常是因为全表扫描或全索引扫描时(type 列显示为 ALL 或 index),又加上了WHERE条件,建议添加适当的索引。
暂时想到上面几个,如果有遗漏,以后再补充。
其他状态例如:Using index、Using index condition、Using index for group-by 则都还好,不用紧张。
最后放出所有字段的一些说明及含义。sql查询最重要的是合理使用索引, 关键点还是在索引!
相关文章推荐
- mysql 性能分析及explain用法
- MYSQL 性能分析及explain用法(2)
- Mysql_mysql 性能分析及explain用法
- mysql 性能分析及explain用法
- MySQL中使用SHOW PROFILE命令分析性能的用法整理(配合explain效果更好,可以作为优化周期性检查)
- mysql 性能分析及explain用法
- mysql 性能分析及explain用法(转)
- mysql 性能分析及explain用法
- [db][mysql]mysql 性能分析及explain用法
- mysql 性能分析及explain用法
- mysql性能分析之explain的用法
- MySQL常用性能分析方法-profile,explain,索引
- MySQL 性能优化——「Explain 分析实践」
- MySQL性能分析及explain的使用
- mysql查询语句分析 explain用法
- MySQL性能分析及explain的使用
- Mysql中使用explain进行性能分析
- MySQL性能分析及explain的使用
- MySQL常用性能分析方法-profile,explain,索引
- MySQL性能分析及explain的使用