Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008 R2:具有Where的交叉连接与内部连接性能_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL Server 2008 R2:具有Where的交叉连接与内部连接性能

SQL Server 2008 R2:具有Where的交叉连接与内部连接性能,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,根据此链接: 它表示,如果交叉连接具有where子句,则其行为类似于内部连接,并返回与内部连接相同的结果 我理解那部分。但我的问题是,当我使用带有where条件的查询交叉连接和另一个带有带ON子句的内部连接的查询时,两者都使用相同的关系并返回相同的数据,性能会有任何差异吗 如果第三个/第四个表与这两个表在内部联接或左外部联接上联接,性能会受到影响吗 我在web上找不到一个直接的答案,为SQL Server寻址相同的地址 吉里贾 吉里贾 如果您谈论的交叉联接是在cpmarision中使用whe

根据此链接:

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

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

如果第三个/第四个表与这两个表在内部联接或左外部联接上联接,性能会受到影响吗

我在web上找不到一个直接的答案,为SQL Server寻址相同的地址

  • 吉里贾

  • 吉里贾


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


在任何情况下,都不应该使用隐式连接,它们是sql反模式,原因有几个,第一个是它们很容易创建一个意外的交叉连接,对于性能来说非常昂贵,并且经常导致错误的查询结果,或者需要添加DIstinct,这也非常昂贵。此外,不应混合使用隐式连接和显式连接(可能会得到错误的结果),如果以后必须转到左连接,则需要重新编写整个查询。因此隐式连接更难维护。最后,如果您需要一个真正的交叉连接,那么从隐式synzat看不出您是有意交叉连接还是意外交叉连接。这会使维护变得特别困难

带有where条件的交叉连接不一定是内部连接,它取决于where条件。请尝试这两种方法并比较执行计划。