【问题标题】:Does Oracle automatically create a secondary index for FOREIGN KEY columns?Oracle 会自动为 FOREIGN KEY 列创建二级索引吗?
【发布时间】:2012-03-04 23:56:11
【问题描述】:

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

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

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

【问题讨论】:

  • 不,它没有。例如,请参阅this

标签: performance oracle indexing foreign-keys


【解决方案1】:

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

【讨论】:

  • 这样的索引需要维护,但有时最好不要创建它们。就我个人而言,我怀疑它应该默认创建它们,并让你在需要时删除它们,但 Oracle 远非唯一一个这样做的数据库。 PostgreSQL 也不会自动为外键关系的引用方创建索引。
猜你喜欢
  • 2021-06-03
  • 2016-07-17
  • 2010-10-24
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多