GROUP BY与 DISTINCT的区别和选择。

写在前面

都具有分组的作用,但是推荐使用GROUP BY ,原因写在下面。

GROUP BY (分组/去重)

······用于对选定字段列进行分组。它会先根据后接字段进行排序,之后保留第一行数据以实现去重。

优势

  1. GROUP BY 在有索引的情况下可以使用索引
  2. GROUP BY 操作场景更加广泛;

劣势

在MySQL8.0之前,GROUP BY不仅仅具有分组的作用,实际上他还会根据后接字段进行隐式排序。如果在无法使用索引排序的情况下,GROUP BY语句的效率会变得很低。

DISTINCT (去重)

用于返回唯一且不同的值。
对关键字 DISTINCT后接所有字段生效,所以说 使用GROUP BY 更加丰富多样,适应更多需求。
对于多列去重,即所有被指定的字段列的值都相同,才会被认为是重复列。
注:
DISTINCT也会使用索引。

总结

  1. 使用索引的情况下,两者效率基本相同,且 GROUP BY 的使用范围更加广泛,所以选择使用 GROUP BY。
  2. 在不使用索引的情况下,如果是MySQL8以前,肯定能使用DISTINCT则不适用GROUP BY,但是如果使用 MySQL8以及之后版本,则考虑到它的多用性,使用GROUP BY。

综上所述,我们尽量使用GROUP BY而不是 DISTINCT。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值