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

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

目录
相关文章
|
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?
100 0
|
12月前
|
SQL
解决union查询order by 排序失效的问题
解决union查询order by 排序失效的问题
218 0
|
C#
C# distnict去重
C# distnict去重
76 0
|
关系型数据库 MySQL 索引
MySQL中去重 distinct 和 group by 是如何去重的
MySQL中去重 distinct 和 group by 是如何去重的
138 0
|
SQL
ORDER BY:对查询结果进行排序
ORDER BY:对查询结果进行排序
107 0
|
关系型数据库 MySQL 数据库
使用order by对查询结果排序|学习笔记
快速学习使用order by对查询结果排序
171 0
|
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.
11017 0
|
C# .NET 开发框架
【C#】list 去重
原文:【C#】list 去重   Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组、集合中的重复元素,还可以自定义去重的规则。
5532 0