Sobes.tech
Middle

Welche Arten von Indizes gibt es in SQL?

sobes.tech KI

Antwort von AI

  • B-Baum (B-Tree): Der am häufigsten verwendete Typ. Geeignet für die meisten Leseoperationen, einschließlich WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimiert für exakte Übereinstimmungen (=). Unterstützt keine Bereichsanfragen oder Sortierung.

    -- Syntaxbeispiel, kann je nach DBMS variieren
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Volltext (Full-Text): Wird für die Suche in großen Textfeldern (VARCHAR, TEXT) verwendet.

    -- Syntaxbeispiel in MySQL
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Syntaxbeispiel in PostgreSQL
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('russian', text_column));
    
  • Räumlich (Spatial): Für die Indexierung geografischer Daten (Punkte, Linien, Polygone). Verwendet mit Datentypen wie GEOMETRY oder GEOGRAPHY.

    -- Syntaxbeispiel in MySQL
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Syntaxbeispiel in PostgreSQL
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Generalized Inverted Index) und GiST (Generalized Search Tree) in PostgreSQL: Flexible Index-Typen, geeignet für verschiedene Aufgaben, einschließlich Volltextsuche, Array- und JSON-Indexierung.

  • Clustered (Clusterd): Bestimmt die physische Reihenfolge der Zeilen in der Tabelle. Eine Tabelle kann nur einen Cluster-Index haben. Häufig basierend auf dem Primärschlüssel.

    -- Beim Deklarieren des Primärschlüssels wird oft ein Cluster-Index erstellt
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- In SQL Server
        ...
    );
    
  • Nicht-Clustered (Non-Clustered): Separate Datenstruktur, die Paare "Spaltenwert (oder Spalten) + Zeiger auf die Datenzeile" speichert. Eine Tabelle kann mehrere Nicht-Clustered-Indizes haben.

Vergleich:

Index-Typ Anwendung Operationen
B-Baum Allgemein, die meisten Datentypen =, <, >, <=, >=, BETWEEN, LIKE (Anfang)
Hash Exakte Übereinstimmung (=) =
Volltext Textsuche MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Räumlich Geografische Daten Räumliche Funktionen
Cluster Physische Reihenfolge der Zeilen Beschleunigt Bereichsauswahlen
Nicht-Cluster Beschleunigt Suche in indexierten Spalten =, <, >, <= und andere