|NO.Z.00136|——————————|BigDataEnd|——|Java&MySQL.高级.V08|——|MySQL.v08|sql性能下降原因|优化原则|

一、MySQL查询和慢查询日志分析
### --- SQL性能下降的原因

——>        在日常的运维过程中,经常会遇到DBA将一些执行效率较低的SQL发过来找开发人员分析,
——>        当我们拿到这个SQL语句之后,在对这些SQL进行分析之前,
——>        需要明确可能导致SQL执行性能下降的原因进行分析,
——>        执行性能下降可以体现在以下两个方面:
### --- 等待时间长

——>        1.锁表导致查询一直处于等待状态,
——>        后续我们从MySQL锁的机制去分析SQL执行的原理执行时间长
### --- 执行时间长

——>        1.查询语句写的烂
——>        2.索引失效
——>        3.关联查询太多join
——>        4.服务器调优及各个参数的设置
二、需要遵守的优化原则
### --- 需要遵守的优化原则

——>        查询优化是一个复杂的工程,涉及从硬件到参数配置、不同数据库的解析器、
——>        优化器实现、SQL 语句的执行顺序、索引以及统计信息的采集等等方面.
### --- 下面给大家介绍几个编写SQL的关键原则,可以帮助我们编写出更加高效的 SQL 查询.

~~~     # 第一条: 只返回需要的结果
——>        一定要为查询语句指定 WHERE 条件,过滤掉不需要的数据行
——>        避免使用 select * from , 因为它表示查询表中的所有字段
~~~     # 第二条: 确保查询使用了正确的索引
——>        经常出现在 WHERE 条件中的字段建立索引,可以避免全表扫描;
——>        将 ORDER BY 排序的字段加入到索引中,可以避免额外的排序操作;
——>        多表连接查询的关联字段建立索引,可以提高连接查询的性能;
——>        将 GROUP BY 分组操作字段加入到索引中,可以利用索引完成分组。

~~~     # 第三条: 避免让索引失效
——>        在 WHERE 子句中对索引字段进行表达式运算或者使用函数都会导致索引失效
——>        使用 LIKE 匹配时,如果通配符出现在左侧无法使用索引
——>        如果 WHERE 条件中的字段上创建了索引,尽量设置为 NOT NULL

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(12)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示