|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
分类:
bdv005-mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通