Oracle 外键索引可以是另一个索引的一部分,还是应该是独立的?

Oracle 外键索引可以是另一个索引的一部分,还是应该是独立的?,oracle,indexing,foreign-keys,Oracle,Indexing,Foreign Keys,我在Oracle18中有一个带主键的索引组织表 主键 (问题编号、位置编号、产品编号、位置编号、部件编号、本地零件编号) 问题表(问题id)有一个外键 两个指向位置表(位置ID FIN和位置ID组件) 我不会在issue_id上创建单独的索引,因为它位于第一位, 但是我应该为LOCATION\u ID\u FIN和LOCATION\u ID\u组件创建单独的外键索引吗 或者这些列包含在主键中就足够了吗 (此问题假设需要外键索引以避免任何锁定(tm争用)) 数据库版本是18,接下来几周将迁移到19

我在Oracle18中有一个带主键的索引组织表

主键 (问题编号、位置编号、产品编号、位置编号、部件编号、本地零件编号)

问题表(问题id)有一个外键 两个指向位置表(位置ID FIN和位置ID组件)

我不会在issue_id上创建单独的索引,因为它位于第一位, 但是我应该为LOCATION\u ID\u FIN和LOCATION\u ID\u组件创建单独的外键索引吗 或者这些列包含在主键中就足够了吗

(此问题假设需要外键索引以避免任何锁定(tm争用))


数据库版本是18,接下来几周将迁移到19c是的,您确实需要以外键列开始的索引。证明这一点的一种方法(来自Tom Kyte的《一对一甲骨文专家》一书)是:

alter table issues disable table lock;
现在,如果您尝试像这样更新父表:

update locations set location_id_fin = <new value>;
更新位置集位置\u id\u fin=;
您将得到以下错误:

ORA-00069:无法获取锁--对子级禁用表锁

但是,一旦添加以外键列开头的索引,就会出现预期错误:

ORA-02292:违反完整性约束(xxx)-找到子记录