sql - RIGHT JOIN 通常比 LEFT JOIN 更快吗?

标签 sql

我在一次采访中被告知,右连接通常比左连接更快。

这是真的吗?

最佳答案

这当然取决于 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/

相关文章:

c# - 在用 C# 加密的 SQL Anywhere 16 中解密 AES,反之亦然

sql - 是否可以在事务内(在 SQL Server 内)运行多个 DDL 语句?

sql - 在 Emacs sql-mysql 中指定端口号

SQL Server 2008 - 如何将 GMT(UTC) 日期时间转换为本地日期时间?

mysql - 数据库设计需要更好的多对多解决方案

mysql - 如何使用 SQL 删除给定表中的冗余记录

python - Django 中的简单查询

java - 查询多对多关系中某个值的总和

java - Java 或 SQL 中的树遍历函数

sql - 将 null 表排序为 "insignificant"