【项目实战典型案例】02.SQL语句优化
创始人
2025-05-28 10:12:31

目录

  • 一:背景介绍
    • 1、问题一:查询11s导致接口请求超时
    • 2、问题二:由于设计数据稍微大了点,接口调用就超过了1s
  • 二:思路&方案
    • 1、Mysql语句的执行顺序
    • 2、explain关键字解析
    • 3、distinct和group by效率对比
    • 4、优化案例
      • 1)数据类型不一致
      • 2)数据类型一致

一:背景介绍

1、问题一:查询11s导致接口请求超时

在这里插入图片描述

2、问题二:由于设计数据稍微大了点,接口调用就超过了1s

在这里插入图片描述

二:思路&方案

1、Mysql语句的执行顺序

  1. from
  2. on
  3. join
  4. where
  5. group by
  6. having + 聚合函数
  7. select
  8. distinct
  9. order by
  10. limit
    在这里插入图片描述
    上面sql语句执行的顺序为2–>3–>4–>1–>5–>6

2、explain关键字解析

explain是解释、说明的意思。在mysql里,一条查询语句需要经过Mysql查询优化器的各种成本和规则,生成一个执行计划。儿explain关键字就是查询这个执行计划的,通过explain关键字,可以分析我们的查询语句的效率。

语法:explain select * from table

在这里插入图片描述

3、distinct和group by效率对比

  1. 有索引的情况下,group by和distinct都能用索引,效率相同
  2. 没有索引的时候,distinct效率高于group by,distinct是根据信息不同进行直接进行去重,group by的原理是结果先进行分组排序,然后返回每组中的第一条数据
  3. 如果是单纯的去重操作的话,无论是否有索引,distinct的效率都更加高,但是吐过查询的列和去重的列不对应的话,distinct就无法使用了。相较于group by不够灵活
  4. group by的语义更加的明确,并且group by可以根据分组的情况加上聚合函数,做一些其他的处理,功能更加丰富,但是有时间效率将低于distinct
  5. distinct用法
 select distinct 列1 , 列2 from table
  1. group by用法
select 列1,列2 from table group by 列1 ,列2

4、优化案例

1)数据类型不一致

sql语句

SELECTaui.ding_phone,aui.ding_name,aui.chaoxing_name,aui.chaoxing_phone 
FROM(SELECT info_id FROM arpro_user_course_info WHERE course_id = 223667994 AND class_id = 55801765 AND is_delete = 0 GROUP BY info_id ) auciLEFT JOIN arpro_user_info aui ON auci.info_id = aui.id

表字段数据类型
在这里插入图片描述
在这里插入图片描述
创建索引
在这里插入图片描述
执行结果:主键索引没有生效
在这里插入图片描述

2)数据类型一致

sql语句

SELECTaui.ding_phone,aui.ding_name,aui.chaoxing_name,aui.chaoxing_phone 
FROM( SELECT DISTINCT info_id FROM arpro_user_course_info WHERE course_id = 223667994 AND class_id = 55801765 AND is_delete = 0 ) auciLEFT JOIN arpro_user_info aui ON auci.info_id = aui.id

执行结果
在这里插入图片描述

相关内容

热门资讯

惠州行五洲:重庆MPV户外帐篷... 开篇引入 随着露营经济从小众走向大众,自驾露营成为主流场景,消费者对帐篷的需求也在不断升级。从简单的...
乐享品质旅游 共赴美好山河 “... 5月19日,乐享品质旅游·共赴美好山河2026年“5.19中国旅游日”崆峒山主题活动暨第二届“问道崆...
法润景区护出行 船营法院借中国... 在一年一度的中国旅游日到来之际,为进一步规范文旅市场秩序、提升游客与从业者法治素养、高效化解旅游领域...
沪蒙携手打造“气象+文旅+康养... 5月20日,“海气山盟”上海—阿尔山康养气象旅游包机首航仪式在上海市气象局举行。首批102名上海游客...
原创 半... 西藏纳木错湖北岸,那曲市班戈县青龙乡5村的恰多朗卡岛,一尊天然巨石,有洞如门,形似一头大象,伸长鼻子...