首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试突击63:MySQL 中如何去重?

    在 MySQL 中,最常见的去重方法有两个:使用 distinct 或使用 group by,那它们有什么区别呢?接下来我们一起来看。...我们先用 distinct 实现单列去重,根据 aid(文章 ID)去重,具体实现如下: 2.2 多列去重 除了单列去重之外,distinct 还支持多列(两列及以上)去重,我们根据 aid(文章...ID)和 uid(用户 ID)联合去重,具体实现如下: 2.3 聚合函数+去重 使用 distinct + 聚合函数去重,计算 aid 去重之后的总条数,具体实现如下: 3.group by...区别1:查询结果集不同 当使用 distinct 去重时,查询结果集中只有去重列信息,如下图所示: 当你试图添加非去重字段(查询)时,SQL 会报错如下图所示: 而使用 group...by 和 distinct 都可以使用索引,此情况它们的性能是相同的;而当去重的字段没有索引时,distinct 的性能就会高于 group by,因为在 MySQL 8.0 之前,group by

    4.3K20

    短视频如何有效去重?vivo 短视频分享去重实践

    ✏️ 编者按: 对于短视频产品而言,提升视频去重性能、降低误杀率,是提升用户体验的必要环节。...所以,内容进行去重处理是非常有必要的。 目前,视频去重面临哪些痛点? 目前,基础样本数据已达到大几千万,在不久的将来会过亿。...目前的难点是,在亿级样本数据的基础上支持百万级别的吞吐量,同时需要兼顾去重的精度以及高召回率。接下来,我将为大家介绍我们是如何应对这几个问题的。...第二个部分是去重策略,主要包括了业务上的逻辑以及去重的策略控制。第三个部分是特征召回部分,主要是作为 Milvus 数据库的客户端代理工作,工作内容主要是负责创建集合以及索引。...比如,我们发现两个相同或者相似的视频,我们会是根据视频的发布时间以周为单位去进行分区。在召回的时候,选择该视频所在分区相近的几个分区进行查询。

    1.7K10

    理解DAX:为什么ALL(表)不去重,ALL(列)去重了?

    小勤:ALL函数是清除所有筛选条件并返回表中的不重复值,下面对表的行进行计数应该是3呀,因为有两个大海是重复的,怎么还是4? 大海:没有说all返回的是不重复值啊。...小勤:那么我ALL(表[姓名]),它出来的是2: 大海:all对表是返回表中的所有行,对列是返回列中的所有值(values),power pivot里的values是去重复的概念。...小勤:那Power Pivot里专门对表的去重函数是哪个? 大海:没有直接的所谓对表去重函数,但你可以用summarize去实现类似的效果: 小勤:哦。...大海:所以,all这个表的情况下,他不会删重复。实际上,数据进入Power Pivot后,转化为列式存储,也是背后有一个类似索引列去关联不同列之间同一行数据的内容。...同时,由于是列式存储,相应的,很多涉及表的行列转换的功能也受到了相应的限制,比如透视、逆透视、转置等相关功能,但列式存储却使得数据计算的效率极大提升…… 小勤:那如果我要一列里的没有删重复的所有数据怎么办

    1.9K10

    10亿QQ号如何去重?

    前言 最近在网上看到一个问题:10亿QQ号如何去重? 我觉得挺有意思的。 今天这篇文章跟大家一起分享一些常见的解决方案,希望对你会有所帮助。...一、技术难点 1.1 数据规模分析 原始数据:10亿×8字节 = 8GB HashSet去重:至少16GB内存(Java对象开销) 理想方案:<1GB内存 1.2 核心挑战 二、单机解决方案:位图法 2.1...    iter.foreach(qq => bitmap.add(qq.toInt))     bitmap.iterator.asScala.map(_.toLong)   }   // 全局去重...速度层 Flink + Redis 实时增量去重 服务层 Spring Boot + HBase 统一查询接口 6.3 实时去重实现 public class QQDeduplication {  ...增量数据实时处理 O(n) O(1) 100% 分层位图索引 超大规模精准去重 O(n)压缩存储 O(1) 100% 九、实战经验与避坑指南 9.1 数据倾斜解决方案 问题场景:部分QQ号段过于集中

    50710

    MySQL中distinct和group by去重的区别

    MySQL中distinct和group by去重的区别 在MySQL中,我们经常需要对查询结果进行去重,而DISTINCT和GROUP BY是实现这一功能的两种常见方法。...根据aid(文章ID)去重: SQL代码: SELECT DISTINCT aid FROM pageview; 多列去重 根据aid和uid联合去重: SQL代码: SELECT DISTINCT...aid, uid FROM pageview; 聚合函数+去重 使用DISTINCT+聚合函数计算aid去重之后的总条数: SQL代码: SELECT COUNT(DISTINCT aid) FROM...查询结果集中只有去重列信息。...而当去重的字段没有索引时,DISTINCT的性能可能会高于GROUP BY,因为在MySQL 8.0之前,GROUP BY有一个隐藏的功能会进行默认的排序,这样就会触发filesort从而导致查询性能降低

    74300

    MySQL多列字段去重的案例实践

    同事提了个需求,如下测试表,有code、cdate和ctotal三列,select * from tt;现在要得到code的唯一值,但同时带着cdate和ctotal两个字段。...distinct支持单列去重和多列去重,如果是单列去重,简明易懂,即相同值只保留1个,如下所示,select distinct code from tt;多列去重则是根据指定的去重列信息进行,即只有所有指定的列信息都相同...除了distinct,group by子句也可以去重,从需求的理解上,如果按照code做group by,应该就可以得到唯一的code了,但是实际执行,提示这个错误,select code, cdate...MySQL不同版本sql_mode默认值可能是不同的,因此在数据库升级配合的应用迁移过程中,尤其要注意像only_full_group_by这种校验规则的改变,很可能是个坑。...本文关键字:#SQL# #去重#

    4.6K10

    如何用JavaScript进行数组去重

    今天的文章和大家谈一谈如何用JavaScript进行数组去重,这是一道常见的面试(笔试)题,可以很好地考察出一个人的逻辑思维及边界考虑情况,希望此文能够帮助大家在解决类似问题时拓宽思路。...当然,“使用库中的一个函数就能去重”并不在本篇文章的讨论范围内,我们针对的是需要自己写代码的场景。...好了,回归正题,我们要进行数组去重,那么先想个大致的思路,比如: 1)新建一个空数组,老数组从第一个开始,看看新数组中有没有,如果没有就push进入新数组,如果存在就下一个。...即在我们看来,这两个数据写出来,看上去就是一样的。 3)对于是非数组的对象,针对几个key的值是一样的情况,我们将其认定是一样的。...当我们的环境是ES6时,一般的去重标准可以使用 set 来做: var rs = new Set(arr); 但是当数组元素为引用类型时,引用地址不一样但在我们看来是完全一样的两个元素,这个方法是去不掉的

    1.4K50

    MySQL FAQ 系列 — 如何将两个表名对调

    问题 有位同学问我,在类似 pt-osc 场景下,需要将两个表名对调,怎么才能确保万无一失呢? 分析 估计其他同学就笑了,表名对掉还不简单吗,相互 RENAME 一下嘛。...但是,我们想要的是同时完成表名对调,如果是先后的对掉,可能会导致有些数据写入失败,那怎么办? 回答 其实也不难,从 MySQL 手册里就能找到方法,那就是:同时锁定2个表,不允许写入,然后对调表名。...我们通常只锁一个表,那么同时锁两个表应该怎么做呢,可以用下面的方法: LOCK TABLES t1 WRITE, t2 WRITE; ALTER TABLE t1 RENAME TO t3; ALTER...TABLE t2 RENAME TO t1; ALTER TABLE t3 RENAME TO t2; UNLOCK TABLES; 看到了吧,其实很简单,两个表同时加表级写锁,然后用 ALTER 语法改名就可以了

    2.3K00

    MySQL中的数据去重,该用DISTINCT还是GROUP BY?

    在MySQL数据库操作中,数据去重是常见的需求。当我们需要从查询结果中排除重复记录时,通常会面临两个选择:使用DISTINCT关键字或GROUP BY子句。...,但也可以单独用于去重: -- 单列去重 SELECT department FROM employees GROUP BY department; -- 多列去重 SELECT department...,通常通过创建临时表或使用文件排序来实现 GROUP BY:MySQL先按指定列分组,然后从每个组中选择一行(通常是非聚合列的第一行) 实际性能测试 我们通过一个包含10万条记录的测试表进行性能对比:...合适的索引都能显著提升性能 **避免SELECT ***:只选择需要的列,减少数据处理量 考虑数据分布:对于高基数(唯一值多)的列,去重操作代价更高 结论 在MySQL中,DISTINCT和GROUP...BY都可以用于数据去重,两者在性能上通常差异不大,特别是在现代MySQL版本中,优化器会对它们进行相似的处理。

    1.1K10
    领券