mysql 减少group by 的开销

group by  一般 和集合函数一起使用,使用情况最多的 是count(),  即将 数据按照一定条件分组,再统计每一组的总数,  显然这是非常消耗资源的一种做法. mysql 36军规里 表示尽量少使用 count(),也是这个原因.  如果想对多种条件进行 统计 ,可以使用 判断语句  如sum(if)  sum(cses when then)  得到.

虽然希望较少的使用 groupby 但是在必须使用group by 也是需要 优化,减轻服务器压力的 

将groupby 的字段 设置为 索引可以有效降低sql 陈本,但是如果 字段在未设置 索引的情况下,想要加快sql执行,可以使用如下:


groupby默认将 分组的字段进行一次排序

select id,name from table_test group by name ;

实际等于 

select id,name from table_test group by name order by name ;

在很多情况下 order by name 消耗时间非常多,甚至大于 group by name本身.

如果只需要对数据分组,并没有对分组后的数据排序的需求,使用如下
select id,name from table_test group by name order by null ;

可以大幅降低筛选时间

当然 如果使用的 其他的排序 ,则默认的排序不起作用

select id,name from table_test group by name order by class;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值