前言
先说大致的结论(完整结论在文末):
- 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。
- 在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 group
by都会进行分组操作,但group by可能会进行排序,触发filesort,导致sql执行效率低下。
基于这个结论,你可能会问:
为什么在语义相同,有索引的情况下,group by和distinct效率相同?
在什么情况下,group by会进行排序操作?
带着这两个问题找答案。接下来,我们先来看一下distinct和group by的基础使用。
distinct的使用
distinct用法
SELECT DISTINCT<