DB—— group by 和 distinct 效率比较

mac2025-06-20  8

数据库操作中,去重计数有两种实现方式,一种是 count + distinct 一种是 count + group by 

table idsalary110K215K310K410K520K610K715K

假设有以上这么个表,要对salary去重计数,按照上面的思路有两种实现方法:

1. select distinct(count(salary)) from table 2. select count(salary) from table group by salary

那么这两种方法有什么不同?都是出于什么样的考虑呢?

distinct 需要将所有的salary值存到一块内存当中去,相当于一个hash结构,key是salary的值,然后最后计算hash的个数;group by 先将salary进行一次sort排序,时间复杂度为nlogn,空间复杂度为1; 选取条件 数据分布去重方式原因离散(多表)group by发挥空间复杂度的优势,但是花费时间长一些集中distinctdistinct占用空间较小,发挥时间复杂度的优势

极端情况考虑:

如果数据全部重复,用distinct又快又好;如果数据全部唯一,用group by;
最新回复(0)