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

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

目录
相关文章
|
Ubuntu
百度搜索:蓝易云【Ubuntu开机自启服务systemd.service配置教程】
现在,你的服务将在Ubuntu开机时自动启动,并在之后的启动中持续运行。记得根据你的实际需求修改 `your_service_name.service`文件中的相关信息。
584 2
|
IDE Java Linux
Pycharm2022.2.3最新激活破解教程(永久激活)
pycharm破解直达:https://cloud.fynote.com/share/d/fG3ILUVAJ
29698 10
MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。
21007 0
|
10月前
|
人工智能 自然语言处理 前端开发
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
DeepSite是基于DeepSeek-V3模型的在线开发工具,无需配置环境即可通过自然语言描述快速生成游戏、网页和应用代码,并支持实时预览效果,显著降低开发门槛。
1766 93
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
|
存储 算法 安全
【集合系列】- 初探java集合框架图(一)
实际开发中,经常用到java的集合框架,比如ArrayList、LinkedList、HashMap、LinkedHashMap,几乎经常接触到,虽然用的多,但是对集合的整体框架,基础知识还是不够系统,今天想和大家一起来梳理一下!
2291 0
【集合系列】- 初探java集合框架图(一)
|
Java 数据安全/隐私保护 Spring
springboot实现邮箱发送(激活码)功能
本文介绍了如何在Spring Boot应用中配置和使用邮箱发送功能,包括开启邮箱的SMTP服务、添加Spring Boot邮件发送依赖、配置application.properties文件,以及编写邮件发送的代码实现。
787 2
springboot实现邮箱发送(激活码)功能
|
缓存 安全 生物认证
什么是代理ip?代理ip的工作原理?代理ip有哪些类型?
当您在互联网上浏览或访问网站时,您的IP地址是您的设备在网络上的唯一标识。通过IP地址,网站和其他在线服务可以追踪您的位置、活动和访问历史。但是,使用IP代理可以帮助您代理本地IP地址,从而增加您的在线隐私和安全。
什么是代理ip?代理ip的工作原理?代理ip有哪些类型?
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
443 6
|
人工智能 安全 Java
当一家公司80%的程序员用AI写代码
当一家公司80%的程序员用AI写代码
1038 6
|
JavaScript 前端开发 容器
vue element plus Card 卡片
vue element plus Card 卡片
582 0