SQL去重方案GROUP BY和DISTINCT对比
假设一个需求要根据type+id去重,则SQL分别如下
GROUP BY的SQL
SELECT type,id FROM table GROUP BY type,id
如果要显示其它字段,可以使用MAX(xxx)
DISTINCT的SQL
SELECT DISTINCT type,id FROM table
如果要显示其它字段,可以使用DISTINCT ON(type,id) xxxx
以上2条SQL效率如何呢?
GROUP BY原理
将type,id进行sort排序,实现去重
DISTINCT原理
将type,id放在内存中,结构类似Map。type,id为map的key,实现去重
对比结果
机器内存足够的话
DISTINCT效率高于GROUP BY
但内存占用也高于GROUP BY