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

posted @ 2019-11-18 18:39  JaminX86  阅读(817)  评论(0编辑  收藏  举报