Oracle是否自动为FOREIGN KEY列创建二级索引?

usr*_*ΛΩΝ 19 oracle indexing performance foreign-keys

我目前正在开发Oracle.我有几个表,我为其定义了FOREIGN KEY约束.我已经阅读过这个面向SQL Server和这个面向MySQL的问题,但我找不到关于Oracle的问题.

所以问题总是一样的:为了优化查询性能,对于我为其创建FOREIGN KEY约束的那些列,我是否还必须创建一个显式的二级索引?Oracle是否自动在FOREIGN KEYed列上创建索引以提高JOIN期间的性能?

我通常执行WHERE子句与这些列进行比较的查询.

Ton*_*ews 20

不,Oracle不会自动在外键列上创建索引,即使在99%的情况下您可能应该这样做.除了帮助查询之外,索引还提高了父表上delete语句的性能.

  • 不过,此类索引的维护成本很高,有时最好不要创建它们。就我个人而言,我怀疑它应该默认创建它们,并让您根据需要删除它们,但 Oracle 远非唯一一个这样做的数据库。PostgreSQL 也不会自动为外键关系的引用方创建索引。 (3认同)