繁体   English   中英

SQL Server 2008 R2:交叉连接与内部连接性能的对比

[英]SQL Server 2008 R2 : Cross join with Where Vs Inner Join Performance

按照此链接:

MSDN链接

它表示,如果交叉联接具有where子句,则其行为与内部联接相同,并返回与内部联接相同的结果。

我了解那部分。 但是我的问题是,当我使用带条件条件的查询交叉连接和带ON子句的带有内部连接的另一个查询时,都使用相同的关系并返回相同的数据,性能会有所不同吗?

如果将第三张/第四张表与INNER或LEFT OUTER JOIN上的这两个表联接在一起,性能会受到影响吗?

我在Web上找不到直接答案,对于SQL Server来说也是如此。

  • 吉里贾

  • 吉里贾

如果您谈论的是交叉连接,其中cpmarision中的条件作为隐式连接到显式连接,则它们通常具有相同的执行计划。 但是,随着查询变得更加复杂(可能很难预测引擎将如何选择执行复杂查询),这种情况可能会改变,但是除非它变得非常复杂,否则可能不会改变。 您始终可以检查执行计划,以查看是否正在发生这种情况。

无论如何,您绝不应该使用隐式联接,由于某些原因,它们是sql反模式,其首要原因是它们都可以很容易地创建意外的交叉联接,这对性能而言昂贵的,并且常常导致错误的查询结果或要求。添加也很昂贵的DIstinct。 此外,您不应混合使用隐式联接和显式联接(可能会得到错误的结果),如果以后必须进行左联接,则需要重新编写整个查询。 因此,隐式连接很难维护。 最后,如果您需要真正的交叉联接,则从隐式Synzat中看不出是要进行交叉联接还是意外的交叉联接。 这可能会使维护变得特别困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM