web-dev-qa-db-ja.com

外部キーのインデックスが必要

インデックス、主キー、外部キーに苦労しています...そして、それらすべてを用意する必要があります。

2つのテーブルがある場合、どちらのテーブルにも整数が主キーとして含まれています。
最初のテーブルは、FKを介して2番目のテーブルの主キーを参照します。

  • 両方のテーブルで、ID列に主キーインデックスがあります
  • 2番目のテーブルのPKを参照するtable1.ref_fieldにFK制約を作成しました(table2.id
  • table1.ref_fieldにインデックスを追加しました

これは、これらのインデックス、主キー、外部キーを整理する最良の方法ですか?

33
stUrb

あなたのデザインは良いです。パフォーマンスの問題がある場合(設計時にはわかりません)、table2.id列と同じ順序(ASC)で、列table1.ref_fieldにインデックスを作成する必要があります。これにより、テーブル/列への結合のパフォーマンスが向上します。インデックスの維持にはオーバーヘッドがあるため、そのコストとパフォーマンス向上のメリットを比較検討してください。

PostgreSQLは、残念ながら、他の列を参照する外部キー列にそのようなインデックスを自動的に作成しないため、自分で行う必要があります。

同じトピックに関するStackOverflowの質問は次のとおりです。

外部キーと主キーのPostgresとインデックス

このようなインデックスを追加するとどのようなメリットがあるかを判断するためのクエリを次に示します。

Postgresql:外部キーのインデックス

32
peterk411