RT,在遇到一个运行很慢SQL的情况下,如何进行分析、优化、测试?
简单说明一下步骤思路;
最常用的是查看执行计划, explain.
对于传统的数据库,优化的最关键点是 资源一次性占用的问题。
简单来说最好的优化就是分步来完成。
多建几个临时表,然后临时表再关联,可以跑的快一些.
如果不知道是哪个sql慢,就开启mysql的慢查询日志。 对记录的日志文件用mysql安装目录下的bin目录下的 mysqldumpslow查看。 具体命令是 mysqldumpslow -s c -t 10 /path/to/slow.log。 可以提取出top10慢的sql语句模式。 这样就找到了哪些语句慢。
找到之后分析的最简单手段是explain查看执行计划。 例如
explain select * from t where xxx order by xxx。
查看explain的结果,可以看出索引使用情况,排序方式等。具体的结果查看mysql官方文档中explain命令的解释最好了。
优化的最主要手段是确保索引建立正确。 如果索引方面没什么可优化的空间,那么多半是表结构设计不合理,或者查询方式组合不合理。 这个就要结合具体的业务去进行数据存储结构或程序架构的优化了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。