索引Oracle中参照完整性子表的列

时间:2017-11-30 14:55:23

标签: oracle indexing foreign-keys database-deadlocks

据我所知,在参照完整性约束的子成员的表的列上生成索引是一种经过验证的良好实践。

这可以防止死锁,因为没有索引,Oracle没有单个较低级别的资源可以锁定,以防止可能违反参照完整性的并发插入。

我也知道,如果索引包含更多列,那么构建FK的列,FK列必须是索引的前导列。

我想知道在两列FK关系的情况下会发生什么情况,子关系列上有两个索引,其中只有一个索引的FK列位于4列B的前导位置-Tree索引和另一个在5列B-Tree索引的第一和第五位置有FK列。

无需指出这种索引练习非常糟糕,需要重新编制索引,我会这样做。

只是为了好奇并且在这个主题上有更多的了解,在这种情况下,具有领先位置的FK列的索引是否总是用于行锁定?

我在使用Oracle 12c R1

1 个答案:

答案 0 :(得分:0)

没有进入详细的锁定语义,答案是肯定的。如果您的领先位置中的FK列的索引,则将使用该索引。如果您还有其他索引也没关系。实际上,两个索引都可以正常,这取决于应用程序。也许它会将它们用于重要的查询。