count去重和distinct去重

简介: count去重和distinct去重

有两种去重方法:
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。空间复杂度小。

两种方法优缺点比较:
如果内存够容纳所有行数,第一种优于第二种
image
当如果内存不够的话,第二种优于第一种。
image

总结数据量小第一种,数据量大第二种。

目录
相关文章
|
开发框架 .NET
list 去重
list 去重
|
6月前
|
JSON JavaScript 前端开发
set 去重
set 去重
57 3
|
6月前
|
SQL
[已解决]使用order by 排序后的是10 6 7 8 9 而不是 6 7 8 9 10?
[已解决]使用order by 排序后的是10 6 7 8 9 而不是 6 7 8 9 10?
102 0
|
SQL
解决union查询order by 排序失效的问题
解决union查询order by 排序失效的问题
222 0
|
C#
C# distnict去重
C# distnict去重
77 0
|
关系型数据库 MySQL 索引
MySQL中去重 distinct 和 group by 是如何去重的
MySQL中去重 distinct 和 group by 是如何去重的
140 0
|
SQL
ORDER BY:对查询结果进行排序
ORDER BY:对查询结果进行排序
108 0
|
算法 搜索推荐 关系型数据库
Orderby 排序优化
在日常的业务开发中,order by 排序是少不了的。但要写出高效的排序SQL,需要先花点精力和时间来了解排序的底层原理,这样才能找到优化排序的好策略。
1304 0
Orderby 排序优化
|
SQL 关系型数据库 PostgreSQL
distinct xx和count(distinct xx)的变态递归优化方法
今天要说的这个优化是从前面一篇讲解《performance tuning case :use cursor or trigger replace group by and order by》http://blog.163.com/digoal@126/blog/static/16387704020.
11022 0