gpt4 book ai didi

sql - 在同一查询中使用 UNION 和 UNION ALL

转载 作者:行者123 更新时间:2023-12-03 21:13:58 27 4
gpt4 key购买 nike

我遇到了一些性能问题,我有如下查询:

SELECT * FROM Foo

UNION

SELECT * FROM Boo

UNION

SELECT * FROM Koo

我确信 Koo 不会返回任何重复项。我正在考虑在最后使用 UNION ALL,因此可以节省 Koo 的排序和不同选择时间。查询应如下所示:

SELECT * FROM Foo

UNION

SELECT * FROM Boo

UNION ALL

SELECT * FROM Koo

这对第一个 UNION 有帮助还是会受到影响?

最佳答案

如果您知道不会有重复项,请始终使用 UNION ALL。

这里有点灰暗,但仍然值得 - 尽管实际上微乎其微。

如果它是一个直接的 UNION-UNION,SQL Server 可以对其进行优化以整理所有 3 个结果集并对两者执行单一排序。由于排序主要是 O(n log n),因此它与 [(A distinct B) add C] 之间的差别很小。

更新

虽然可以执行单个合并排序,但 SQL Server 似乎并不这样做(至少不总是这样做)- 因此在这里使用 UNION ALL 的智慧绝对值得。比较这里的计划:SQLFiddle (点击“查看执行计划”链接)

关于sql - 在同一查询中使用 UNION 和 UNION ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818573/

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