gpt4 book ai didi

SQL Server 2005 - 内连接的顺序

转载 作者:行者123 更新时间:2023-12-02 22:23:07 27 4
gpt4 key购买 nike

我有一个查询,其中Where 子句包含三个内部联接语句。执行该查询大约需要 2 分钟。如果我只是更改两个内部联接的顺序,性能就会下降到 40 秒。

除了更改内连接的顺序之外什么都不做怎么会对查询性能产生如此巨大的影响?我本以为优化器会解决所有这些问题。

最佳答案

SQL 是声明性的,也就是说,JOIN 顺序并不重要。

但是,在实践中,例如,如果优化器没有探索所有选项(理论上可能需要数月),这是一个复杂的查询。

另一种选择是,如果重新排序并且得到不同的结果,则这是一个非常不同的查询,但这通常是使用 OUTER JOIN 的情况。

这也可能是 ON 子句的指定方式,如果您对 FROM 子句重新排序,它就必须改变。除非您使用旧的(且不好的)JOIN-in-the-WHERE 子句。

最后,如果您担心的话,您可以使用括号来更改计算顺序,以明确您的意图,例如,首先过滤一个大表以生成派生表。

关于SQL Server 2005 - 内连接的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1334944/

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