首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

去重是distinct还是group by?

distinct简单来说就是用来去重,而group by设计目的则是用来聚合统计,两者在能够实现功能上有些相同之处,但应该仔细区分,因为用错场景的话,效率相差可以倍计。...单纯去重操作使用distinct,速度是快于group bydistinct distinct支持单列、多列去重方式。 单列去重方式简明易懂,即相同值只保留1个。...多列去重则是根据指定去重列信息来进行,即只有所有指定列信息都相同,才会被认为是重复信息。...group by使用频率相对较高,但正如其功能一样,它目的是用来进行聚合统计,虽然也可能实现去重功能,但这并不是它长项。...group by 是用来分组,不建议用来去除重复行,distinct 用来去除重复行,不能分组。

97310
您找到你想要的搜索结果了吗?
是的
没有找到

hivegroup by与distinct区别及性能测试比较

Hive去重统计 相信使用Hive的人平时会经常用到去重统计之类吧,但是好像平时很少关注这个去重性能问题,但是当一个表数据量非常大时候,会发现一个简单count(distinct order_no...先说结论:能使用group by代替distinc就不要使用distinct,例子: 实际论证 order_snap为订单快照表 总记录条数763191489,即将近8亿条记录,总大小:108.877GB...7.448499541倍 注意到为什么会有这个差异,Hadoop其实就是处理大数据,Hive并不怕数据有多大,怕就是数据倾斜,我们看看两者输出信息: # distinct Stage-Stage...,尽量不要使用distinct吧。...但是如果你想在一条语句里看总记录条数以及去重之后记录条数,那没有办法过滤,所以你有两个选择,要么使用两个sql语句分别跑,然后union all或者就使用普通distinct

1.5K20

SQL去重是用DISTINCT好,还是GROUP BY好?

我们知道DISTINCT可以去掉重复数据,GROUP BY在分组后也会去掉重复数据,那这两个关键字在去掉重复数据时效率,究竟谁会更高一点?...[SalesOrderDetail] WHERE UnitPrice>1000; 执行完之后结果如下: ? 接下来,我们将这个表里数据增大到194万条,再重复上面的实验。...2.GROUP BY与DISTINCT去掉重复数据对比 GROUP BY与DISTINCT类似,经常会有一些针对这两个哪个效率高争议,今天我们就将这两个在不同重复数据量效率作下对比。...可以看出两条语句对应执行时间GROUP BY比DISTINCT效率高一点点。...作者对上述语句同时执行多次,针对重复量多UnitPrice,GROUP BY总处理效率比DISTINCT高一点点,但是针对重复量低SalesOrderDetailID,DISTINCT就比GROUP

2.9K20

MySQL中GROUP BY和DISTINCT:去重效果与用法解析

本文将详细解析MySQL中GROUP BY和DISTINCT用法,并比较它们对同一字段去重效果是否相同。...三、GROUP BY和DISTINCT对同一字段去重效果比较尽管GROUP BY和DISTINCT都可以用于去重,但它们用法和效果是不同。...GroupDistinct效果对比现在我们来对比一下GroupDistinct对同一字段去重效果。我们将使用一个示例数据集来进行演示。...Distinct关键字用于去除结果集中重复字段值,适用于单个字段去重操作。在对同一字段进行去重时,Group By和Distinct效果是相同Group By还可以用于多个字段分组操作。...通过合理使用GroupDistinct,我们可以更好地处理和分析数据库中数据,提取有用信息,并进行统计计算。

2.7K50

为什么 GROUP BY 之后不能直接引用原表中

GROUP BY 后 SELECT 列限制   标准 SQL 规定,在对表进行聚合查询时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定聚合键、聚合函数(SUM...=only_full_group_by   提示信息:SELECT 列表中第二个表达式(cname)不在 GROUP BY 子句中,同时它也不是聚合函数;这与 sql 模式:ONLY_FULL_GROUP_BY...为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句)中列 ? 莫急,我们慢慢往下看。...就会约束:当我们进行聚合查询时候,SELECT 列不能直接包含非 GROUP BY 子句中列。...强行将适用于个体属性套用于团体之上,纯粹是一种分类错误;而 GROUP BY 作用是将一个个元素划分成若干个子集,使用 GROUP BY 聚合之后,SQL 操作对象便由 0 阶"行"变为了 1

1.7K10

SQL中distinct用法

这并不成问题,不过,有时您也许希望仅仅列出不同(distinct值。关键词 distinct用于返回唯一不同值。...示例2.2 select distinct xing, ming from B 返回如下结果: 返回结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重,而是分别作用于了...3.COUNT统计 select count(distinct name) from A; --表中name去重后数目, SQL Server支持,而Access不支持 count是不能统计多个字段...5.其他 distinct语句中select显示字段只能是distinct指定字段,其他字段是不可能出现。...例如,假如表A有“备注”列,如果想获取distinc name,以及对应“备注”字段,想直接通过distinct是不可能实现

1.7K30

Mysql DISTINCT实现思路

DISTINCT实际上和GROUP BY操作非常相似,只不过是在GROUP BY之后每组中只取出一条记录而已 所以,DISTINCT实现方式和GROUP BY基本相同,同样可以通过索引扫描来实现,当然...也就是说,当只进行DISTINCT操作Query仅利用索引无法完成操作时,MySQL会利用临时表来做一次数据“缓存”,但不会对临时表中数据进行filesort操作 示例 EXPLAIN SELECT...DISTINCT group_id FROM group_message\G ****** 1. row ****** id: 1 SELECT_type: SIMPLE table: group_message...这条查询完全使用索引实现,并且可以看到,他实现使用了和group-by同样方式 对于DISTINCT优化,思路和GROUP BY基本上一致,关键在于利用好索引,当无法利用索引时,就要确保尽量不要在大结果集上面进行...DISTINCT操作

1.3K70

【SQL】SQL中distinct用法

这并不成问题,不过,有时您也许希望仅仅列出不同(distinct值。关键词 distinct用于返回唯一不同值。...示例2.2 select distinct xing, ming from B 返回如下结果: 返回结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重,而是分别作用于了...distinct语句中select显示字段只能是distinct指定字段,其他字段是不可能出现。...例如,假如表A有“备注”列,如果想获取distinc name,以及对应“备注”字段,想直接通过distinct是不可能实现。...这并不成问题,不过,有时您也许希望仅仅列出不同(distinct值。 关键词 DISTINCT 用于返回唯一不同值。

1.3K20

神奇 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中

GROUP BY 后 SELECT 列限制   标准 SQL 规定,在对表进行聚合查询时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定聚合键、聚合函数(SUM...=only_full_group_by   提示信息:SELECT 列表中第二个表达式(cname)不在 GROUP BY 子句中,同时它也不是聚合函数;这与 sql 模式:ONLY_FULL_GROUP_BY...为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY 子句)中列 ? 莫急,我们慢慢往下看。...GROUP BY 子句中列。...强行将适用于个体属性套用于团体之上,纯粹是一种分类错误;而 GROUP BY 作用是将一个个元素划分成若干个子集,使用 GROUP BY 聚合之后,SQL 操作对象便由 0 阶"行"变为了 1

2.1K20

终于“搞懂” ALL VALUES DISTINCT 区别

之前听大佬讲过 ALL VALUES DISTINCT 区别,一直懵懵懂懂。通过学习,今天终于算是“搞懂”了。...先说结论:其实在设计良好数据模型里,VALUES 和 IDSTINCT 无本质区别,总是能返回相同值。区别发生在模型中存在无效关系(空行)时。...使用多列作为参数时,返回这些列中所有现有值组合。(解除筛选器,保留空行)。 VALUES 函数 使用表作为参数时,返回表所有行,不删除重复项,并保留可能存在空行。表中重复行保持不变。...使用列作为参数时,返回当前筛选器中计算不同值,并保留空行。 DISTINCT 函数 使用表作为参数时,返回表不同值,不考虑空行。...(会删除重复行) 使用列作为参数时,返回当前筛选器中计算不同值,但是不返回空行。 - END -

58520
领券