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

目录

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

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

相关内容

热门资讯

cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
荼蘼什么意思 岁月缱绻葳蕤生香... 感谢作者【辰夕】的原创独家授权分享编辑整理:【多肉植物百科】百科君坐标:云南 曲靖春而至,季节流转,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...