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

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

目录
相关文章
|
SQL HIVE
数仓学习-----named_struct和collect_set函数
数仓学习-----named_struct和collect_set函数
968 5
|
存储 安全
HDFS读写流程详解
HDFS读写流程详解
1893 2
HDFS读写流程详解
|
8月前
|
存储 人工智能 弹性计算
阿里云2025年双十一优惠活动政策解读,值得买的亮点连夜整理
阿里云2025双11火热开启!领最高1728元企业券,爆款云服务器低至38元/年,新客享7000万Tokens免费体验。GPU、OSS、RDS数据库等全线特惠,更有AI建站、无影云电脑、短信套餐超值购,助力企业降本增效,智启未来!
1127 2
|
缓存 安全 生物认证
什么是代理ip?代理ip的工作原理?代理ip有哪些类型?
当您在互联网上浏览或访问网站时,您的IP地址是您的设备在网络上的唯一标识。通过IP地址,网站和其他在线服务可以追踪您的位置、活动和访问历史。但是,使用IP代理可以帮助您代理本地IP地址,从而增加您的在线隐私和安全。
3890 0
什么是代理ip?代理ip的工作原理?代理ip有哪些类型?
|
Java 数据安全/隐私保护 Spring
springboot实现邮箱发送(激活码)功能
本文介绍了如何在Spring Boot应用中配置和使用邮箱发送功能,包括开启邮箱的SMTP服务、添加Spring Boot邮件发送依赖、配置application.properties文件,以及编写邮件发送的代码实现。
978 2
springboot实现邮箱发送(激活码)功能
|
消息中间件 Linux 开发者
Linux进程间通信秘籍:管道、消息队列、信号量,一文让你彻底解锁!
【8月更文挑战第25天】本文概述了Linux系统中常用的五种进程间通信(IPC)模式:管道、消息队列、信号量、共享内存与套接字。通过示例代码展示了每种模式的应用场景。了解这些IPC机制及其特点有助于开发者根据具体需求选择合适的通信方式,促进多进程间的高效协作。
806 3
【Vscode+Latex】Mac 系统Vscode的LaTeX中插入参考文献
在Mac系统下的VSCode环境中配置LaTeX工作流以便插入和引用参考文献的详细步骤。
2018 0
|
传感器 vr&ar 计算机视觉
增强现实(AR)技术原理深度解析
【5月更文挑战第5天】本文深度解析了增强现实(AR)技术原理,包括图像识别与跟踪、三维注册技术和显示技术,并探讨了AR在游戏、教育、工业和医疗等领域的广泛应用。尽管面临准确性、成本和隐私等挑战,但随着技术进步,AR将在更多领域发挥关键作用,展现其潜力和价值。
3301 2