需要外键索引

stU*_*Urb 37 postgresql index foreign-key database-design primary-key

我正在为索引、主键和外键苦苦挣扎……并且需要拥有所有这些。

如果我有两个表,它们都有一个整数作为主键。
第一个表通过 FK 引用第二个表的主键。

  • 在两个表上,我在 ID 列上都有一个主键索引
  • 我在table1.ref_field引用第二个表 ( table2.id)的 PK上创建了 FK 约束
  • 我在上面添加了一个索引 table1.ref_field

这是组织这些索引、主键和外键的最佳方式吗?

pet*_*411 35

你的设计很好。如果您遇到性能问题(在设计时无法知道),您应该在 table1.ref_field 列上创建索引,其顺序 (ASC) 与 table2.id 列相同。这将提高表/列之间连接的性能。维护任何索引都会产生开销,因此您需要权衡该成本与提高性能的好处。

不幸的是,PostgreSQL 不会自动在引用其他列的外键列上创建这样的索引,所以你必须自己做。

这是关于同一主题的 StackOverflow 问题:

外键和主键上的 Postgres 和索引

这是一个查询,可帮助确定您可以从添加此类索引中获得哪些好处:

Postgresql:外键索引