Postgresql UNION的运行时间是运行单个查询的10倍

前端之家收集整理的这篇文章主要介绍了Postgresql UNION的运行时间是运行单个查询的10倍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 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(全部)根本不会加快速度?

关于你的“额外工作”问题.是. Union不仅结合了两个查询,还通过并删除了重复项.它与使用不同的语句相同.

出于这个原因,特别是与你的except语句结合使用“union all”可能会更快.

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

原文链接:https://www.f2er.com/postgresql/192185.html

猜你在找的Postgre SQL相关文章