gpt4 book ai didi

sql-server - 选择中左联接与子查询的奇怪问题

转载 作者:行者123 更新时间:2023-12-04 00:27:33 27 4
gpt4 key购买 nike

我有一个导致性能问题的T-SQL查询。它是一个很大的组件,但是似乎引起问题的部分是一个简单的LEFT JOIN。

可以通过删除左联接并在select中使用子查询来解决此问题,但是这对我来说并不令人满意,因为我看不到为什么一个快速运行而另一个却无法运行。

涉及的数据不多,并且所有联接列上都有键/索引。我唯一想知道的是关于数据库的统计信息以及它们是否影响性能。

例如(注:这只是一个更复杂的查询的简化



SELECT A.1,A.2,B.3 FROM A LEFT JOIN B ON A.ID = B.ID ...


快速

SELECT A.1, A.2, (SELECT B.3 FROM B WHERE B.ID = A.ID) FROM A

最佳答案

通常,子查询通常比左联接要慢,因此必须进行其他操作。

首先显示整个查询,因为问题可能是您使用...表示的一部分。

接下来检查您的执行计划,看看有什么不同。并且您绝对确定id列上有一个索引。 FK约束不会自动获取创建的索引。

两个查询都返回相同的记录吗?一个可能会更快,因为它不等同于另一个。

关于sql-server - 选择中左联接与子查询的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716685/

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