前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql group by实现方式(一) - 索引扫描

Mysql group by实现方式(一) - 索引扫描

作者头像
dys
发布2018-04-02 16:34:13
1.1K0
发布2018-04-02 16:34:13
举报
文章被收录于专栏:性能与架构性能与架构

由于GROUP BY实际上也同样须要进行排序操作,而且与ORDER BY相比,GROUP BY主要只是多了排序之后的分组操作。所以,在GROUP BY的实现过程中,与ORDER BY一样可以利用索引

例如有一个索引idx(c1,c2,c3)

SELECT c1, c2 FROM t1 WHERE c1 < 10 GROUP BY c1, c2;

这条查询就可以直接使用索引扫描完成

使用索引扫描需要什么条件?

(1)查询针对一个单表

(2)GROUP BY条件字段必须处在同一个索引中最前面的连续位置

(3)如果引用到了该索引中GROUP BY条件之外的字段条件,它就必须以常量形式存在

(4)在使用GROUP BY 的同时,如果有聚合函数,只能使用 MAX 和 MIN 这两个聚合函数,并且它们均指向相同的列

(5)当 GROUP BY 条件字段不是索引前缀部分的时候,where 中的条件字段需包含缺失的索引键,且是一个常量

例如 SELECT c1, c2 FROM t1 WHERE c2 = 10 GROUP BY c1, c3;

此GROUP BY使用c1, c3,缺失c2,不符合最左前缀原则,但where条件中有c2,并且条件值是个常量,所以就满足条件,可以使用索引完成group by操作了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档