我知道子表中未编制索引的外键可能会导致ORA-00060:死锁。同样,共享索引也可能导致死锁。
我在以下场景中有共享索引,
class TableA {
int tableAId;
List<TableB> listOfTableB;
}
class TableB {
String name;
}
相关的hibernate映射(部分),
<list cascade="all,delete-orphan" name="listOfTableB" table="TableB">
<key column="tableAId" />
<index column="idx"/>
<composite-element class="TableB">
<property name="name" column="name" not-null="true" />
</composite-element>
</list>
使用上面的代码,在DB中,它为TableB中的'tableAId'和'idx'创建一个共享索引(同名索引)。
在这种情况下,我是否应该单独为'tableAId'添加单独的索引以及现有的共享索引以避免死锁?或者现有的索引本身就足够了?
答案 0 :(得分:3)
如果你有一个tableAId, idx
的索引,那么单独tableAid
上的索引可能(几乎总是)没有任何好处。这没有死锁的危险。