gpt4 book ai didi

sql - Postgresql UNION 花费的时间是运行单个查询的 10 倍

转载 作者:行者123 更新时间:2023-11-29 11:18:31 26 4
gpt4 key购买 nike

我正在尝试获取 postgresql 中两个几乎相同的表之间的差异。我正在运行的当前查询是:

SELECT * FROM tableA EXCEPT SELECT * FROM tableB;

SELECT * FROM tableB EXCEPT SELECT * FROM tableA;

上述每个查询大约需要 2 分钟才能运行(它是一个大表)

我想合并这两个查询以节省时间,所以我尝试了:

SELECT * FROM tableA EXCEPT SELECT * FROM tableB
UNION
SELECT * FROM tableB EXCEPT SELECT * FROM tableA;

虽然它有效,但运行需要 20 分钟!!!我猜最多需要 4 分钟,这是单独运行每个查询的时间。

是否有 UNION 正在做的一些额外工作导致它花费这么长时间?或者有什么方法可以加快速度(有或没有 UNION)?

更新:使用 UNION ALL 运行查询需要 15 分钟,几乎是单独运行每个查询的时间的 4 倍,我说 UNION (all) 根本不会加快速度是否正确?

最佳答案

关于您的“额外工作”问题。是的。 Union 不仅合并了两个查询,而且还遍历并删除了重复项。这与使用不同的语句相同。

出于这个原因,特别是结合您的 except 语句“union all”可能会更快。

在这里阅读更多: http://www.postgresql.org/files/documentation/books/aw_pgsql/node80.html

关于sql - Postgresql UNION 花费的时间是运行单个查询的 10 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337678/

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