gpt4 book ai didi

sql - 表达式或谓词的顺序对带有 ANSI 连接的标准 SQL 中的外连接的连接条件有什么影响吗?

转载 作者:行者123 更新时间:2023-12-02 17:15:07 26 4
gpt4 key购买 nike

采用典型的左外连接场景。我们都知道表格的顺序非常重要,例如,Q1Q2 并不相等:

SELECT A.x, B.y FROM A LEFT OUTER JOIN B ON A.id = B.id -- (Q1)
SELECT A.x, B.y FROM B LEFT OUTER JOIN A ON B.id = A.id -- (Q2)

当我从概念上思考多重联接时,我通常很自然地想象选择新表作为感兴趣的对象,然后描述它的行与之前的行如何相关。保持并行对我来说没有任何优势,根据我自己的习惯,我通常这样编写连接条件:

SELECT A.x, B.y FROM A LEFT OUTER JOIN B ON B.id = A.id -- (Q3)

我与一位前同事进行了交谈,他误解了语法的工作原理。对于这位同事来说,Q3 是错误的,Q1 是正确的。我确实认识到,对于旧式的外连接语法,这很重要,并且可能是这种困惑的根源。我从未听说或见过其他人使用 ANSI 连接来实现这种情况。请回答这个问题并挽回我的声誉,指出我忽略的一些事情,或者对错误的观点提供更深入的见解。

表达式或谓词的顺序对具有 ANSI 连接的标准 SQL 中的外连接的连接条件有什么影响吗?

最佳答案

不,没有什么区别。

我个人更喜欢你在Q3中展示的风格,我的一些同事更喜欢Q1中的风格。我不知道有谁会认为他们中的任何一个都是错误的。

查询优化器将查询从内到外变成完全不同的东西,因此当它完成时,谓词甚至不再作为简单的比较而存在。通常它是在索引或表中进行查找,并且由于只能在一个方向上完成,因此谓词的编写方式没有区别。

我检查了(在 SQL Server 2005 中)两个查询的执行计划,其中谓词操作数的顺序不同,正如预期的那样,它们是相同的。

关于sql - 表达式或谓词的顺序对带有 ANSI 连接的标准 SQL 中的外连接的连接条件有什么影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371890/

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