我有一个像这样的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
希望这也有助于其他人。
您只能在单个表中创建复合索引。
所以你建议:
为a.A_ID和b.A_ID创建复合索引 为b.B_ID和c.B_ID创建复合索引
这是不可能的。
在您的情况下,列a.A_ID,b.A_ID,c.A_ID上的单列索引就可以了。
在这两种方法中,它将是01。
方法02无论如何都不会起作用;你不能创建一个包含两个表(a
和b
)列的索引。
此外,根据您使用的数据库版本,应该对外键列进行索引,否则可能会发生锁定(您会想知道发生了什么 - 缺少索引)。