我在一次采访中被告知,右连接通常比左连接更快。
这是真的吗?
最佳答案
这当然取决于 RDBMS,但一般来说没有理由这样做。右连接可以轻松地自动重写为左连接。因此,如果这是真的,查询优化器(即使是原始查询优化器)也可以执行该转换。
从语义上讲,出于正确性原因,您无论如何都没有选择,因此您无法选择。
不过,在一种情况下,这通常是正确的。当您有这样的数据仓库样式查询时:
select aggregates...
from Facts
left join Dim1 on ...
left join Dim2 on ...
left join Dim3 on ...
left join Dim4 on ...
group by ...
您想要获得具有物理右连接的散列连接计划。左连接会使用巨大的 Facts 表来构建哈希表,这非常糟糕。您宁愿根据维度输入构建小型哈希表,然后通过探测这些哈希表来流式传输巨大的 Facts
表。
当然,所有优秀的查询优化器都会为您执行此操作(至少在用于 DW 使用的数据库中)。
关于sql - RIGHT JOIN 通常比 LEFT JOIN 更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875875/