左连接顺序会影响sql server中的执行结果和持续时间吗?

时间:2014-03-26 02:56:00

标签: sql sql-server

查看一个有100万+行。表b有50000多行。 当离开加入时,a left join b left join c花费1分钟。 b左连接加入左连接c花费10秒。 他们返回相同的结果。

左连接顺序会影响结果并执行持续时间吗?

1 个答案:

答案 0 :(得分:3)

他们不应该返回相同的结果,除非你有where子句进行额外的过滤。

第一个应该在A中保留所有1,000,000行。第二个应该在B中保留所有50,000行。如果它们匹配,那么A中的每一行都匹配B中的至少一行,B中的每一行至少匹配一行甲

至于你的问题,连接顺序确实会影响结果(正如我刚才所描述的)。它并没有真正影响执行,因为优化器确定执行计划,与from子句中的连接排序方式无关。 (当然,不同的语义差异将导致不同的执行计划。)