it-swarm.com.de

Notwendigkeit von Indizes für Fremdschlüssel

Ich habe Probleme mit Indizes, Primärschlüsseln und Fremdschlüsseln ... und der Notwendigkeit, sie alle zu haben.

Wenn ich zwei Tabellen habe, haben beide eine Ganzzahl als Primärschlüssel.
Die erste Tabelle verweist über eine FK auf den Primärschlüssel der zweiten Tabelle.

  • In beiden Tabellen habe ich einen Primärschlüsselindex für die ID-Spalte
  • Ich habe eine FK-Einschränkung für table1.ref_field Erstellt, die auf die PK der zweiten Tabelle verweist (table2.id).
  • und ich habe einen Index für table1.ref_field hinzugefügt.

Ist dies der beste Weg, um diese Indizes, Primär- und Fremdschlüssel zu organisieren?

33
stUrb

Ihr Design ist gut. Wenn Sie ein Leistungsproblem haben (das Sie zur Entwurfszeit nicht kennen), sollten Sie einen Index für die Spalte table1.ref_field in derselben Reihenfolge (ASC) wie die Spalte table2.id erstellen. Dies verbessert die Leistung bei Verknüpfungen zwischen Tabellen/Spalten. Die Verwaltung eines Index ist mit einem Mehraufwand verbunden. Sie möchten diese Kosten also gegen den Vorteil einer verbesserten Leistung abwägen.

PostgreSQL erstellt solche Indizes für Fremdschlüsselspalten, die leider auf andere Spalten verweisen, nicht automatisch. Sie müssen dies also selbst tun.

Hier ist eine StackOverflow-Frage zum gleichen Thema:

Postgres und Indizes für Fremdschlüssel und Primärschlüssel

Mit der folgenden Abfrage können Sie ermitteln, wo Sie vom Hinzufügen eines solchen Index profitieren können:

Postgresql: Indizes für Fremdschlüssel

32
peterk411