【发布时间】:2019-08-12 00:37:03
【问题描述】:
我有一个这样的 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
- 为 b.A_ID(外键)创建单个索引
- 为 c.B_ID(外键)创建单一索引
方法02
- 为 a.A_ID 和 b.A_ID 创建复合索引
- 为 b.B_ID 和 c.B_ID 创建复合索引
希望这对其他人也有帮助。
【问题讨论】:
-
WHERE子句是索引定义的键。如果没有WHERE,你就不需要索引,因为hash join很可能会被执行。
标签: oracle oracle11g oracle10g database-indexes