PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was ist die Definition des sekundären Index in Postgresql?

Die Definitionen von primären und sekundären Indizes sind etwas unpräzise.

Unter Verwendung von zwei populären Universitätstexten als Referenz:

Grundlagen von Datenbanksystemen, Elmasri &Navathe definiert sie als:

Datenbanksysteme:Das komplette Buch, Garcia-Molina et. al definiert sie als:

Einige Eigenschaften, die für beide Definitionen oben gelten:

  • Primärschlüssel können Primärindizes sein
  • es kann höchstens 1 primären Index pro Tabelle geben
  • Primärindizes bestimmen eindeutig, wo ein Datensatz physisch gespeichert wird.
  • Alle anderen Indizes werden als sekundär eingestuft.

Wenn jedoch die Platzierung von Datensätzen in der Datendatei durch kein Feld bestimmt wird, kann kein Primärindex erstellt werden.

Daher ist es bei sortierten Dateien sinnvoll, vom Primärindex zu sprechen (das wäre die Liste der Felder, auf denen die Sortierung basiert). Ich kann keine anderen Beispiele für physische Dateistrukturen finden, in denen ein primärer Index erstellt werden kann.

Postgresql verwendet eine Heap-Struktur für die physische Speicherung von Datensätzen. Heaps werden nicht sortiert (Wortspiel:sie sind sortiert). Daher werden sogar die Primärschlüssel mithilfe sekundärer Indizes implementiert, und als solche sind alle Indizes in Postgresql sekundär.

Andere RDBMS-Systeme tun Implementieren Sie Speicherformate, die Primärindizes unterstützen:

Die Sprache in der Postgres-Dokumentation ist ungenau.

Das ist wahr.

Das ist nicht der Grund, warum alle Indizes in Postgresql sekundär sind. Primärindizes können auch getrennt vom Hauptdatenbereich der Tabelle gespeichert werden.