group by 和 distinct 的区别?
数据库 MySQL
官方 推荐

它们本质语言逻辑上的数据处理动作先后是不一样,distinct 是先获取结果集,再去重复记录。group by 是基于KEY先分组,再返回计算结果。


从效率上来讲 group by和distinct都能使用索引,在相同语义下,从执行效率上也看不到明显的差异;


那为什么,大家都更推崇使用group by?

  • group by语义更为清晰
  • group by可对数据进行更为复杂的一些处理


由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算。