SQL 加入条件顺序表现

SQL join conditions order performance

JOIN条件顺序影响性能吗?我有两个表 A 和 B。我正在尝试这样加入它们:

SELECT * FROM A
INNER JOIN B on B.ID_A = A.ID

在这种情况下,firebird 使用 NATURAL 计划而不是使用外键。

SELECT * FROM A
INNER JOIN B on A.ID = B.ID_A

效果不错。

这正常吗?

我不熟悉 firebird,但通常对于内部连接来说并不重要。 在新版本的 Oracle 或 SQLServer 或 MySQL 或 Postgresql 中,它不会影响性能。我们有解释计划检查数据库选择正确的加入方式你可以试试。

这个查询没问题,但要确保 B.ID_A 是索引,(为了快速性能)

不要在 sql 查询中使用 *,只使用必需的列...

你的问题是关于性能的,所以我在想,你有非常大的数据.. 所以必须在您的查询中使用 LIMIT...

例子

SELECT A.ID, A.column1, B.column2, FROM A
INNER JOIN B on B.ID_A = A.ID  LIMIT 0,100

我猜你使用的 Firebird 版本早于 2.5.4(可能是 2.5.3)。它在 2.5.4 中修复了错误 http://tracker.firebirdsql.org/browse/CORE-4530。请升级到 Firebird 2.5.5 并检查您的问题是否消失。