Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL Hash-Indizes

Indizes in PostgreSQL sind Datenbankobjekte, die die Geschwindigkeit der Datenabfrage in einer Tabelle erhöhen. Hash-Indizes werden verwendet, um Zeilen in einer Tabelle auf der Grundlage von Gleichheitsvergleichen schnell zu finden.

Verwendung

Hash-Indizes sind besonders nützlich, wenn Abfragen Gleichheitsbedingungen enthalten, wie z.B. `=`. Sie sind nicht für Bereichsabfragen geeignet und werden mit der Anweisung `CREATE INDEX` mit der Option `USING HASH` erstellt.

sql
CREATE INDEX index_name
ON table_name USING HASH (column_name);

In dieser Syntax gibt `USING HASH` den Typ des Indexes an, der auf `column_name` von `table_name` erstellt werden soll.

Beispiele

1. Grundlegende Erstellung eines Hash-Index

sql
CREATE INDEX customer_id_hash
ON customers USING HASH (customer_id);

Dadurch wird ein Hash-Index für die Spalte "customer_id" in der Tabelle "customers" erstellt, der die Suchleistung bei Gleichheitssuchen nach "customer_id" verbessert.

2. Hash-Index für mehrere Spalten

sql
CREATE INDEX employee_name_hash
ON employees USING HASH ((first_name || last_name));

In diesem Beispiel wird ein Hash-Index für die Verkettung der Spalten "Vorname" und "Nachname" in der Tabelle "Mitarbeiter" erstellt, der für Gleichheitssuchen nach dem vollständigen Namen nützlich ist.

3. Bedingter Hash-Index

sql
CREATE INDEX active_customer_hash
ON customers USING HASH (customer_id)
WHERE status = 'active';

Es wird ein partieller Hash-Index für `customer_id` in der Tabelle `customers` erstellt, aber nur für Zeilen, in denen `status` `active` ist, wodurch Abfragen, die nach dieser Bedingung filtern, optimiert werden.

Tipps und bewährte Praktiken

  • Für die Suche nach Gleichberechtigung verwenden. Hash-Indizes sind ideal für `=`-Operationen, aber nicht für Bereichsabfragen.
  • Kombiniere mit Zwängen. Verbinde Hash-Indizes mit eindeutigen Beschränkungen, um die Datenintegrität zu gewährleisten.
  • Ziehe Alternativen in Betracht. Überprüfe, ob ein B-Baum-Index nicht besser geeignet wäre, da er eine größere Bandbreite an Abfragetypen unterstützt und der Standard-Index-Typ in PostgreSQL ist.
  • Überwache die Leistung. Analysiere und überwache regelmäßig die Nutzung der Indizes, um sicherzustellen, dass sie leistungsfördernd sind. Verwende Tools wie `pg_stat_user_indexes`, um die Indexleistung zu beurteilen.
  • Achte auf die Haltbarkeit. Hash-Indizes werden nicht WAL-geloggt, was die Haltbarkeit und Wiederherstellungsmöglichkeiten beeinträchtigt. Dies kann in Systemen, in denen die Haltbarkeit der Daten wichtig ist, ein entscheidender Faktor sein.
  • Plane für die Wartung. Hash-Indizes werden bei PostgreSQL-Upgrades möglicherweise nicht automatisch neu erstellt, was zu einem Funktionsverlust führen kann, wenn sie nicht korrekt verwaltet werden. Um die Leistung aufrechtzuerhalten, kann eine regelmäßige Neuindizierung erforderlich sein.
  • Kenne die Grenzen. Hash-Indizes werden im Vergleich zu B-Baum-Indizes weniger häufig verwendet, da sie speziell für Gleichheitsabfragen und nicht für Bereichsabfragen geeignet sind. Berücksichtige bei der Wahl des Index-Typs die spezifischen Anforderungen deiner Anwendung.