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

目录

  • 一:背景介绍
    • 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

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

相关内容

热门资讯

柳南区周边亲子游景点推荐 在繁忙的生活中,亲子游成为了许多家庭增进感情、放松身心的绝佳选择。柳南区周边有不少适合亲子游玩的景点...
广州水乐园产品工厂十强推荐(2... 行业背景与评选标准 随着全球水上娱乐产业的蓬勃发展,广州作为中国水上乐园设备制造的核心区域,涌现出一...
欧洲总部落子伦敦 中国潮玩加速... 封面新闻记者 付文超 1月30日举行的中英商务论坛上,包括泡泡玛特创始人、CEO王宁在内的多位企业家...
吕文扬企业家夜游惠山:智享千年... 新年伊始的江苏无锡,惠山古镇的华灯与月光交织成诗。这座藏着118座祠堂的江南秘境,以“山湖yue夜·...
美签在手,说走就走:那些“蹭”... 张姐最近在朋友圈晒了张墨西哥海边的日落照,配文“美签就是我的任意门”——可不是嘛,拿着美国签证,能免...