0

如果我在迁移中有以下行,postgresql 会添加隐式索引吗?我应该为外键显式添加索引吗?这些模型酌情包含 has_many 和 belongs_to。

t.integer :club_id,
          :null => false,
          :options => "CONSTRAINT fk_transactions_club REFERENCES clubs(id)"
4

1 回答 1

0

来自精美手册

5.3.5。外键
[...]
由于DELETE来自被引用表的行或被UPDATE引用列的 a 将需要扫描引用表以查找与旧值匹配的行,因此索引引用列通常是一个好主意。因为这并不总是需要,并且有很多关于如何索引的选择,外键约束的声明不会自动在引用列上创建索引。

您的 FK 正在引用 PK,因此您可能不必担心更新。如果您的引用表(带有 的表club_id)将很大并且您希望club经常删除行,那么某种索引club_id应该可以club更快地删除行。如果您在 上没有索引club_id,则尝试删除club行将需要对包含的表进行表扫描,club_id而表扫描不是您的朋友。

所以答案可能是,这取决于club将如何使用

于 2013-06-07T21:34:41.167 回答