Group by 后面的字段多少是否影响SQL语句的效率?

zengjd 2009-04-29 09:40:54
Group by 后面的字段个数是否影响SQL语句的效率?
是不是越多越慢?
...全文
2046 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
LIHY70 2009-04-29
  • 打赏
  • 举报
回复
听听~
zengjd 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jinjazz 的回复:]
我的理解是全表扫描不管group by 几个字段应该都是差不多的,而且不大有优化的余地。如果他在执行计划中所占比例越大,说明这个查询的效率越好。
[/Quote]

你这个理解和大部分人的理解都不一样,可以不可以详细讲讲你?
jinjazz 2009-04-29
  • 打赏
  • 举报
回复
我的理解是全表扫描不管group by 几个字段应该都是差不多的,而且不大有优化的余地。如果他在执行计划中所占比例越大,说明这个查询的效率越好。
zengjd 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jinjazz 的回复:]
具体情况具体分析嘛,最起码的一点,group by越多,返回的数据量也越大。对聚合计算、排序计算已经传输的压力都会增大,进而整个查询计划中的全表扫描的所占比例就会减小。而group by 一个字段的情况下,基本上除了聚合计算就是全表扫描。
[/Quote]

没太看懂你啥意思啊
能不能那个稍微解释一下?
jinjazz 2009-04-29
  • 打赏
  • 举报
回复
具体情况具体分析嘛,最起码的一点,group by越多,返回的数据量也越大。对聚合计算、排序计算已经传输的压力都会增大,进而整个查询计划中的全表扫描的所占比例就会减小。而group by 一个字段的情况下,基本上除了聚合计算就是全表扫描。
Yang_ 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zengjd 的回复:]
如果Group by后面的字段不是来自同一个表,而是多个多个表的字段
是不是效率更严重?
这个时候,估计索引也没有用了吧!
[/Quote]
索引可能有用,要看具体执行计划
zengjd 2009-04-29
  • 打赏
  • 举报
回复
如果Group by后面的字段不是来自同一个表,而是多个多个表的字段
是不是效率更严重?
这个时候,估计索引也没有用了吧!
-狙击手- 2009-04-29
  • 打赏
  • 举报
回复
不一定,
要看数据分布、密度及索引情况
Garnett_KG 2009-04-29
  • 打赏
  • 举报
回复
在没有索引的情况下,

GROUP BY 后面的字段越多,会增加Sort的复杂度,所以要增加更多的CPU时间,所以会慢些,至於说明不明显,

这要看环境了。
jinjazz 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zengjd 的回复:]
我同事说不会。
没法说服他。

[/Quote]

看执行计划
lg3605119 2009-04-29
  • 打赏
  • 举报
回复
应该会 建议在分组列上建立索引
ks_reny 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ChinaJiaBing 的回复:]
SQL code
理论会...
[/Quote]
實際也會降低效率的.
zengjd 2009-04-29
  • 打赏
  • 举报
回复
我同事说不会。
没法说服他。
jinjazz 2009-04-29
  • 打赏
  • 举报
回复
聚集索引可以优化聚合函数,具体的sql效率你可以通过执行计划来观察
Yang_ 2009-04-29
  • 打赏
  • 举报
回复
虽然不是线形的,越多应该越慢
有时影响不是很大,要看数据(按group by 后字段重复的情况)
jinjazz 2009-04-29
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
和你表中的索引有关系
lgx0914 2009-04-29
  • 打赏
  • 举报
回复
会,而且有非常大的影响
ChinaJiaBing 2009-04-29
  • 打赏
  • 举报
回复

理论会...

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧