gpt4 book ai didi

sql-server - DISTINCT 是否总是隐含在 IN 子句中使用的子查询中?

转载 作者:行者123 更新时间:2023-12-03 12:39:25 24 4
gpt4 key购买 nike

select * from tab4 where a  in (select b from tab4)
select * from tab4 where a in (select DISTINCT b from tab4)

上述 2 个查询产生完全相同的查询计划和 IO 统计信息,因此第二个查询中的 DISTINCT 似乎没有产生任何影响并被 SQL Server 忽略。 (我在两个查询中都有一个“Hash Map(Partial aggregate”运算符,我猜它用于 DISTINCT)

这是否适用于所有情况,还是我只是遇到了一个边缘情况?

最佳答案

DISTINCT 在这里没有任何逻辑上的区别。因此,说是不是暗示是没有意义的。

在实现层面上,SQL Server 知道这一点。在子查询中使用 DISTINCT 来提高性能是迷信的。它什么都不做。

事实上,我不清楚为什么它在所有情况下都有帮助。区分一组可能代价高昂。如果这不是一个好主意,SQL Server 将不会这样做。

关于sql-server - DISTINCT 是否总是隐含在 IN 子句中使用的子查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094983/

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