gpt4 book ai didi

sql - 为什么 SQL Server 使用嵌套循环

转载 作者:行者123 更新时间:2023-12-04 20:51:45 26 4
gpt4 key购买 nike

我有查询例如:

SELECT TOP 10 
User.id,
User.Name,
Country.Country
FROM User
Inner Join Country
ON Country.Id = User.CountryId
where User.PlanId = 1

在这种情况下,SQL 管理器显示在使用哈希匹配的执行计划中,并且速度非常快。

但是,如果我使用 where User.PlanId = 2 SQL 管理器使用嵌套循环进行查询并且速度非常慢......为什么不同的搜索条件使用不同的算法?我该如何解决?

最佳答案

我猜想您的用户数量要多得多,使用 PlanID 2 比 1。

这将解释执行计划和运行时的变化。 HASH MATCH是最通用(通常效率最低)的连接。基本上,引擎会手动构建一个表,将所有值配对。
NESTED LOOP检查左侧的每个值与右侧的每个值,当一个数据集比另一个大得多并且两侧都被索引时,效果很好。
HASH MATCH但是,如果您的数据集非常小,则可能很快。我怀疑速度差异是因为数据集的大小不同。您可以通过以下方式轻松检查:

SELECT PlanId, COUNT(*) as CT
FROM User
GROUP BY PlanID

...这将为您提供分配。

关于sql - 为什么 SQL Server 使用嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980798/

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