MySQL 慢查询优化案例

2024-06-04 2360阅读

​>优质博文:IT-BLOG-CN

一、慢查询优化基本步骤

【1】先运行看看是否真的很慢,注意设置SQL_NO_CACHE(查询时不使用缓存);

【2】where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的 where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高;

【3】explain查看执行计划,是否与2预期一致(从锁定记录较少的表开始查询);

【4】order by limit 形式的 sql语句让排序的表优先查;

【5】了解业务方使用场景;

【6】加索引时参照建索引的几大原则;

【7】观察结果,不符合预期继续从1分析;

二、几个慢查询案例

1、复杂语句写法

很多情况下,我们写 SQL只是为了实现功能,这只是第一步,不同的语句书写方式对于效率往往有本质的差别,这要求我们对 mysql的执行计划和索引原则有非常清楚的认识,请看下面的语句:

Python
select
   distinct cert.emp_id
from
   cm_log cl
inner join
   (
      select
         emp.id as emp_id,
         emp_cert.id as cert_id
      from
         employee emp
      left join
         emp_certificate emp_cert
            on emp.id = emp_cert.emp_id
      where
         emp.is_deleted=0
   ) cert
      on (
         cl.ref_table='Employee'
         and cl.ref_oid= cert.emp_id
      )
      or (
         cl.ref_table='EmpCertificate'
         and cl.ref_oid= cert.cert_id
      )
where
   cl.last_upd_date >='2013-11-07 15:03:00'
   and cl.last_upd_date='2013-11-07 15:03:00'
   and cl.last_upd_date='2013-11-07 15:03:00'
   and cl.last_upd_date= 2875
         and oei.node_right = 2875
         and oei.node_right = 2875           
               and oei.node_right = 2875                           
               and oei.node_right


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]

    跳过 5