gpt4 book ai didi

sql - 使用 UNION 子查询进行查询需要很长时间

转载 作者:行者123 更新时间:2023-12-01 09:36:25 27 4
gpt4 key购买 nike

对于某些依赖于子查询的查询,我遇到了一个奇怪的问题。它们运行速度快如闪电,直到我在子查询中使用 UNION 语句。然后他们无休止地运行,我在 10 分钟后给了。我现在描述的场景不是我开始的原始场景,但我认为它消除了很多可能的问题,但会产生同样的问题。所以即使这是一个毫无意义的查询,请耐心等待!

我有一张 table :

tblUser - 100,000 rows
tblFavourites - 200,000 rows

如果我执行:
SELECT COUNT(*) 
FROM tblFavourites
WHERE userID NOT IN (SELECT uid FROM tblUser);

......然后它在一秒钟内运行。但是,如果我修改它以便子查询具有 UNION,它将运行至少 10 分钟(在我放弃之前!)
SELECT COUNT(*) 
FROM tblFavourites
WHERE userID NOT IN (SELECT uid FROM tblUser UNION SELECT uid FROM tblUser);

一个毫无意义的改变,但它应该产生相同的结果,我不明白为什么它需要更长的时间?

将子查询放入 View 并调用它具有相同的效果。

任何想法为什么会这样?我正在使用 SQL Azure。

问题解决了。看我下面的回答。

最佳答案

UNION 生成唯一值,因此 DBMS 引擎进行排序。
在这种情况下,您可以安全地使用 UNION ALL。

关于sql - 使用 UNION 子查询进行查询需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984706/

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