查看一个有100万+行。表b有50000多行。
当离开加入时,a left join b left join c
花费1分钟。
b左连接加入左连接c花费10秒。
他们返回相同的结果。
左连接顺序会影响结果并执行持续时间吗?
答案 0 :(得分:3)
他们不应该返回相同的结果,除非你有where
子句进行额外的过滤。
第一个应该在A中保留所有1,000,000行。第二个应该在B中保留所有50,000行。如果它们匹配,那么A中的每一行都匹配B中的至少一行,B中的每一行至少匹配一行甲
至于你的问题,连接顺序确实会影响结果(正如我刚才所描述的)。它并没有真正影响执行,因为优化器确定执行计划,与from
子句中的连接排序方式无关。 (当然,不同的语义差异将导致不同的执行计划。)