gpt4 book ai didi

sql - distinct vs group by 哪个更好

转载 作者:可可西里 更新时间:2023-11-01 14:08:41 26 4
gpt4 key购买 nike

对于我们都提到的最简单的情况:

select id from mytbl 
group by id

select distinct id from mytbl

正如我们所知,它们生成相同的查询计划,这在一些项目中被反复提及,如 Which is better: Distinct or Group By

而在hive中,前者只有一个reduce任务,而后者有多个。

根据实验,我发现 GROUP BY 比 DISTINCT 快 10 倍

它们是不同的。

所以我学到的是:

GROUP-BY 无论如何都不比 DISTINCT 差,而且有时会更好。

我想知道:

1。如果这个结论成立。

2。如果为真,我将考虑将 DISTINCT 作为一种逻辑上方便的方法,但为什么 DISTINCT 不采用 GROUP-BY 的更好实现方式?

3。如果为假,我会非常渴望知道它在大数据情况下的正确用法。

非常感谢!!:)

最佳答案

你的经历很有趣。我还没有看到 distinctgroup by 的单一缩减器效果。两种构造之间的优化器可能存在一些细微差别。

Hive 中的一个“著名”示例是:

select count(distinct id)
from mytbl;

对比

select count(*)
from (select distinct id
from mytbl
) t;

前者只使用一个reducer,后者并行运行。我以我的经验看到了这一点,并且对其进行了记录和讨论(例如,在本 presentation 的幻灯片 26 和 27 上)。因此,distinct 绝对可以利用并行性。

我想随着 Hive 的成熟,这些问题会得到解决。然而,具有讽刺意味的是,Postgres 与 COUNT(DISTINCT) 有类似的性能问题,尽管我认为根本原因有点不同。

关于sql - distinct vs group by 哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31876137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com