news 2026/6/19 16:36:03

100W数据去重,该用distinct还是groupby,说说理由?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
100W数据去重,该用distinct还是groupby,说说理由?

功能等效性 (仅去重)

  • ELECT DISTINCT column1, column2, ... FROM orders;

  • SELECT column1, column2, ... FROM orders GROUP BY column1, column2, ...;

这两条SQL语句在只获取唯一组合的列值时,返回的结果是完全相同的。

表达意图和可读性

  • DISTINCT: 这个关键字的语义非常直接——“返回唯一的行”。当你的主要目的是去重时,使用DISTINCT能更清晰地表达你的意图,代码也更易于理解。

  • GROUP BY: 这个子句的主要目的是将数据分成多个组,并对每个组进行聚合操作(如COUNT(),SUM(),AVG()等)。虽然在不使用聚合函数时,GROUP BY可以达到去重的效果,但这并非其主要设计目的。如果读者看到GROUP BY,通常会期望看到聚合函数。

性能考量 (100万数据量级)

  • 查询优化器:两种写法的等效性,它们的实际性能表现可能几乎没有差异。

  • 执行计划:去重操作通常涉及以下一种或多种底层操作:

    • 排序 (Sorting):将所有数据按照去重列进行排序,然后遍历排序后的结果,只保留每组相同数据的第一条。如果数据量大到内存无法容纳,排序可能需要磁盘I/O(外部排序),这会比较慢。

    • 哈希 (Hashing):遍历数据,将列值组合计算哈希值并存入哈希表。如果哈希表中已存在相同的哈希值(并确认原始值相同),则丢弃当前行。哈希操作通常在内存中进行时效率较高。

  • 索引的影响:

    • 如果去重的列上有合适的索引(特别是覆盖索引,即索引包含了所有需要去重的列),数据库可能可以直接利用索引的有序性或结构来高效地提取唯一值,避免全表扫描和大规模排序/哈希。

    • 如果没有合适的索引,数据库将不得不进行全表扫描,然后进行排序或哈希。这时性能开销会比较大。

对于性能,更关键的因素是是否有合适的索引支持去重操作,以及数据库优化器如何选择执行计划,而不是DISTINCTGROUP BY关键字本身的区别。在没有索引的情况下,两者都可能较慢。

总结

对于100万数据去重(仅获取唯一行):

  1. 首选DISTINCT因为它在语义上更清晰地表达了“去重”的意图。

  2. 性能通常相似

  3. 关注索引:确保你希望去重的列上有合适的索引。这是提升性能的关键,远比纠结用DISTINCT还是GROUP BY更重要。对于100万行数据,没有索引的去重操作将会非常慢。

  4. 实际测试最重要的永远是实际测试。使用你目标数据库的EXPLAIN来查看两条语句的执行计划。比较它们的成本、是否使用了索引、以及实际执行时间。不同数据库、不同版本、不同数据分布和表结构都可能导致细微的性能差异。

简而言之:为了代码可读性,用DISTINCT,为了性能,确保有索引,并用EXPLAIN验证。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 12:57:29

STM32F103驱动LCD12864实时显示波形曲线与自定义图形

本文还有配套的精品资源,点击获取 简介:这个资源包提供一套可在STM32F103芯片上直接运行的LCD12864驱动方案,支持硬件SPI或并行接口通信,能稳定刷新动态波形——比如正弦波、方波等模拟信号,实现类似简易示波器的逐…

作者头像 李华
网站建设 2026/6/17 13:00:37

ArcMap老鸟的避坑实录:表格转矢量时‘Z值错误’和坐标对调怎么破?

ArcMap实战避坑指南:表格转矢量高频问题深度解析 在GIS数据处理流程中,将表格坐标数据转换为矢量要素看似基础操作,却暗藏诸多技术陷阱。许多中级用户在执行 Display XY Data 时,常遭遇要素位置漂移或导出失败的"灵异现象&…

作者头像 李华
网站建设 2026/6/17 12:57:10

PG 管控系统技术方案

一、背景在这里插入图片描述 随着业务规模增长,PostgreSQL 实例数量不断增加,数据库运维面临的挑战也越来越明显。 传统运维方式通常依赖 DBA 手工巡检、人工分析告警、逐条执行命令和脚本。对于少量实例,这种方式还能应对;但当实…

作者头像 李华
网站建设 2026/6/17 13:32:09

告别音乐枷锁:用ncmdump轻松解密网易云NCM格式音乐

告别音乐枷锁:用ncmdump轻松解密网易云NCM格式音乐 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的困扰?从网易云音乐下载的歌曲,只能在特定客户端播放,无法在车…

作者头像 李华
网站建设 2026/6/17 13:55:25

数据库运维的下一个拐点:从WEB到AI+Headless Agent

在过去两年的技术分享中,我们完整见证了企业数据库运维体系的两次革命性跃迁:从传统本地客户端的碎片化运维,到 Web 云端统一管控的标准化运维。我们详细拆解了 Web 架构如何解决了传统模式部署繁琐、版本混乱、安全失控、协同低效的核心痛点…

作者头像 李华