案例02-sql语句优化
创始人
2025-05-28 14:27:58
0

目录

    • 1、背景介绍:
    • 2、思路&过程
      • 明确distinct和group by的差异
      • 数据不一致影响索引
      • 改正后
    • 3、总结:

1、背景介绍:

前端调用后端接口的时候发现接口的响应时间特别长,然后对后端接口进行分析。最后发现是sql语句的执行时间太长。看了一下sql语句的相关信息:course_id字段和class_id字段添加了索引,左连接两个表的id类型不一致,使用分组的方式进行去重。下面对sql语句进行分析。
在这里插入图片描述

2、思路&过程

    1.sql语句各部分的执行顺序。2.明确distinct和group by的差异。3.查看sql语句是否已经添加了索引,索引是否失效。

sql执行顺序

1.from
2.on
3.join
4.where
5.group by
6.having + 聚合函数
7.select
8.distinct
9.order by
10.limit

在这里插入图片描述
以上sql语句的执行顺序为3->4->5->2->6->1

明确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

group by用法

select 列1,列2 from table group by 列1 ,列2

数据不一致影响索引

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

可以看见这里的条件是courseid,classid,还有两个表的id

在这里插入图片描述
这里可以看到两张表的id类型不一致
创建索引如下
在这里插入图片描述
非两个表的id的那张临时表生效了
在这里插入图片描述

改正后

在这里插入图片描述
改正后生效了。

3、总结:

明确sql语句的执行顺序有助于我们对于sql语句进行优化。提高我们对数据库和sql语句的理解。来编写效率更高的语句。

相关内容

热门资讯

从“纸上政策”到“落地实效” ... 在建湖县高新技术园区,文辰精密科技有限公司的生产车间内机器轰鸣,工人们正忙着赶制新一批订单。这家专注...
跨省办公更便捷!京津冀律师驿站... 11月22日至23日,京津冀律师驿站在北京启动“百千万行动计划”,计划通过建立百家律所联系点,推动千...
梅花生物:因侵害专利权被味之素... 北京商报讯(记者 郭秀娟 王悦彤) 11月23日,北京商报记者获悉,近日梅花生物发布公告称,公司及全...
吉林益豆食品有限公司:依托互市... 珲春地处中、俄、朝三国交界,得天独厚的地理位置,使其成为连接东北亚的“黄金通道”。在这里,吉林益豆食...
北京外国语大学教授宁强在敦煌因... 中新网11月23日电 据“北京外国语大学国新学院”微信公众号消息,11月23日,北京外国语大学国际新...
上海市民建议“推行地铁月票制度... 近日 有网友在人民网“领导留言板”留言 希望上海地铁推出月票制度 上海申通地铁集团有限公司答复表示 ...
原创 中... 近期,日本首相高市早苗首次明确表态,必要时将武力介入台海,这一惊人的言论犹如对历史的挑衅,并直接威胁...
女儿为留学想卖掉其名下的房子,... 父母已离婚多年 很少与父亲见面 一直是姑姑 照顾病重的父亲…… 女儿因求学花销 急需卖房变现 200...
《最高人民法院关于审理建设工程... 为深入贯彻习近平法治思想,认真落实党的二十届四中全会精神,正确审理建设工程施工合同纠纷案件,统一法律...
【金昌】老百姓的“声音”,是这... 编 者 按 人民,是推动经济社会发展的主角;基层,是新闻永不枯竭的源头。为深入学习和践行“四力”要求...