有两种去重方法:
1、select count(distinct id) from a;这个是将所有值都放入到内存中,key为列值,通过hash算出有多少个key就是多少行。
2、select count(1) from (select 1 from a group by id ) a,这个是通过group by先将id进行排序,之后只要进行计数就可以了。时间复杂度为nlogn,空间复杂度为1。空间复杂度小。
两种方法优缺点比较:
如果内存够容纳所有行数,第一种优于第二种
当如果内存不够的话,第二种优于第一种。
总结数据量小第一种,数据量大第二种。