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
GEOMETRYoderGEOGRAPHY.-- 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 |