Craig Ringer によると:
通常、参照側の外部キー列に(またはそれを含めて)インデックスを作成することをお勧めしますが、必須ではありません。追加するインデックスごとにDML操作がわずかに遅くなるため、
INSERT
、UPDATE
、またはDELETE
ごとにパフォーマンスコストを支払います。インデックスがめったに使用されない場合、その価値はないかもしれません。
インデックスを追加するメリットがコストを上回るかどうかをどのように判断しますか?
インデックスを追加する前後に単体テストのプロファイルを作成し、全体的なパフォーマンスの向上を確認しますか?それとももっと良い方法がありますか?
インデックスの使用は、データの構造とデータの選択性によって異なります。使用しないクエリを作成すると、コストが高くなります。それらを効果的に使用する場合、それらは素晴らしいツールです。コマンドのプランニングまたはプランニングと実行のみのクエリプランナーとクエリプランナーanalytics(EXPLAIN
)があります(EXPLAIN ANALYZE
)。
そして素晴らしいオンラインブックがあります: インデックスlukeを使用 インデックスの推奨される使用法について
経験則を選び、それに従ってください。たとえば、私は常に外部キーの参照側にインデックスを作成します。
ユーザーのニーズに基づくパフォーマンス基準に照らして製品のパフォーマンステストを行ってください。たとえば、システムは100 POST要求タイプXの1分あたりの着信負荷を処理する必要があります。
パフォーマンス要件を満たせない場合は、モデルを調整し、そのプロセスでの経験則を破る可能性があります。