首页 > 解决方案 > 在 Oracle 中创建复合索引的推荐方法

问题描述

我有一个这样的 oracle 查询结构:

SELECT <SOME_COLUMNS>
FROM A a
JOIN B b ON a.A_ID = b.A_ID
JOIN C c ON b.B_ID = c.B_ID

忽略关于 WHERE 子句。

已经在 A_ID、B_ID 和 C_ID 上创建了单列索引(C_ID 未使用,但它是表 C 中的主键)。

从上述查询的这两种方法中创建其他索引的最佳方法是什么?

方法01

方法02

希望这对其他人也有帮助。

标签: oracleoracle11goracle10gdatabase-indexes

解决方案


您只能在单个表中创建复合索引。

所以正如你所提议的:

为 a.A_ID 和 b.A_ID
创建复合索引 为 b.B_ID 和 c.B_ID 创建复合索引

这是不可能的。

在您的情况下,列 a.A_ID、b.A_ID、c.A_ID 上的单列索引就可以了。


推荐阅读