gpt4 book ai didi

sql - 当不需要第二个表中的数据时,JOIN 的效率是否比 EXISTS IN 更高/更低?

转载 作者:行者123 更新时间:2023-12-02 18:36:46 27 4
gpt4 key购买 nike

我需要查找所有有订单的家庭。我根本不关心订单的数据,只关心它的存在。 (使用 SQL Server)

这样说是不是更有效率:

SELECT HouseholdID, LastName, FirstName, Phone 
FROM Households
INNER JOIN Orders ON Orders.HouseholdID = Households.HouseholdID

或者这个:

SELECT HouseholdID, LastName, FirstName, Phone 
FROM Households
WHERE EXISTS
(SELECT HouseholdID
FROM Orders
WHERE Orders.HouseholdID = Households.HouseholdID)

最佳答案

除非这是一个相当严格的 1:1 关系(考虑到家庭和订单的更广泛含义,这似乎没有多大意义),否则您的查询将返回不同的结果(如果订单中有更多匹配行)表)。

在 Oracle(以及大多数 DBMS)上,我希望 Exists 版本的运行速度明显更快,因为它只需要在 Orders 中找到符合条件的 Households 记录中的一行。

无论 DBMS 如何,我都希望解释计划能够显示差异(如果表非常大,则全表扫描无法解决查询)。

您尝试过测试吗?允许缓存吗?

C.

关于sql - 当不需要第二个表中的数据时,JOIN 的效率是否比 EXISTS IN 更高/更低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2491984/

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