您现在的位置是:亿华云 > 数据库
慢SQL诊断优化套路包,套路用的对,速度升百倍
亿华云2025-10-09 01:35:42【数据库】2人已围观
简介在DBA的日常工作中,调整个别性能较差的SQL语句是一项富有挑战性的工作。面对慢SQL,一些DBA会心烦,会沮丧,会束手无措,也会沉着冷静、斗智斗勇!当中的关键在于数据库管理员如何分析得出SQL语句的
在DBA的诊断日常工作中,调整个别性能较差的优化SQL语句是一项富有挑战性的工作。面对慢SQL,套路一些DBA会心烦,包套倍会沮丧,速度升百会束手无措,诊断也会沉着冷静、优化斗智斗勇!当中的套路关键在于数据库管理员如何分析得出SQL语句的执行计划和如何从SQL语句的执行计划中发现问题。
下面老王就慢SQL的包套倍诊断和优化分享一些常用的套路~
慢SQL诊断
系统层面:检查系统服务器运行情况,磁盘 I/O 等;
数据库层面:
对于MySQL来说,速度升百通过慢日志定位慢SQL; 对于慢SQL,诊断查看其执行计划,优化分析耗时的套路原因; 如果缺失索引,根据业务需求,包套倍创建合适的速度升百索引;如果由于SQL语句的写法有问题,需要根据业务逻辑优化语句的写法。实用的SQL诊断工具:SQLTXPLAIN
是网站模板Oracle专家开发的,用于诊断SQL相关的问题的工具,简单易用却功能强大。
对于慢SQL诊断支持很多Optimzer问题:如执行计划异常、SQL慢、结果不正(Wrong Result)等。
慢SQL优化
由 SQL 编写导致的慢 SQL 的优化建议:
字段类型转换导致不用索引,如字符串类型的不用引号,数字类型的用引号等,这有可能会用不到索引导致全表扫描; mysql 不支持函数转换,所以字段前面不能加函数,否则这将用不到索引; 不要在字段前面加减运算; 字符串比较长的可以考虑索引一部份减少索引文件大小,提高写入效率; like % 在前面用不到索引; 根据联合索引的第二个及以后的字段单独查询用不到索引; 不要使用 select *; 排序请尽量使用升序 ; or 的查询尽量用 union 代替 (Innodb); 复合索引高选择性的字段排在前面; order by / group by 字段包括在索引当中减少排序,效率会更高。 删除表所有记录请用 truncate,不要用 delete 不让 mysql 干多余的事情,如:计算 在 Innodb上用 select count(*),云南idc服务商因为 Innodb 会存储统计信息; 慎用 Oder by rand()。开源 SQL 优化平台
对于 SQL 语句的优化,现在有一些开源的SQL优化平台,这些融入了大量DBA工程师的经验,我们可以借助这些平台对 SQL 进行优化。
1. SOAR
地址:https://github.com/XiaoMi/soar/
是一款 SQL 智能优化与改写工具,由小米运维 DBA 团队出品,SOAR 主要由语法解析器、集成环境、优化建议、重写逻辑、工具集五大模块组成,相比业内其他优秀产品有自己的优势,不仅能帮助你 rewrite SQL并且能给出一些优化的建议。
2. SQLAdvisor
地址:https://github.com/Meituan-Dianping/SQLAdvisor
是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL的原生态词法解析,结合分析SQL中的其中条件,聚合条件,多表加入关系给出索引优化建议。香港云服务器
很赞哦!(23)
相关文章
- 域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
- 小米8 SE/9 SE安卓9 Pie内核源代码公布
- 谷歌助力,快速实现 Java 应用容器化
- 从拼多多事件看电商的促销模型
- 5、企业注册国内域名需要证件,其它情况一律不需要证件。
- Vue使用技巧和项目中遇到的问题
- 百道Python面试题实现,搞定Python编程就靠它
- 一位程序员爸爸抵制编程教育:“我不会教孩子学编程”
- 公司和个人选域名方法一样吗?有什么不同?
- 为什么阿里巴巴禁止在foreach循环里进行元素的remove/add操作