von Markus Winand.

Clustered-Index


Ein Clustered-Index (SQL Server, MySQL/InnoDB) ist eine Tabelle, die in einer B-Tree Struktur gespeichert wird. Es gibt keine zweite Struktur (Heap-Tabelle).

Ein Non-Clustered Index ist ein Index, der auf eine andere Datenstruktur verweist, wo weitere Tabellenspalten gespeichert werden.

Ein Tabellenzugriff über einen sekundären Index (Index auf dem Clustered Index) ist langsamer als dasselbe Szenario mit einer Heap-Tabelle.

SQL Server kann Tabellen optional als Clustered-Index verwalten. Man hat also die freie Wahl zwischen einem Clustered-Index und einer Heap-Tabelle. Es kann jedoch maximal einen Clustered-Index pro Tabelle geben. Wenn dieser gelöscht wird, wird die Tabelle in eine Heap-Tabelle umgebaut. Beim Anlegen eines Clustered-Indexes auf eine Heap-Tabelle wird die Heap-Strutkur gelöscht. SQL Server unterstützt beliebige Clustering-Schlüssel – insbesondere auch non-unique Spaltenkombinationen. Um eine SQL Server Tabelle ohne Clustered-Index anzulegen, muss die NONCLUSTERED Klausel verwendet werden:

CREATE TABLE (
   id    NUMBER NOT NULL,
   [...]
   CONSTRAINT pk PRIMARY KEY NONCLUSTERED (id)
)

Die MySQL InnoDB Engine verwendet ausschließlich Clustered-Indizes. MySQL verwendet den Primärschlüssel oder einen Unique-Constraint als Clustering-Schlüssel. Wenn es keinen Unique-Constraint gibt, generiert MySQL eine eindeutige ID für jeden Eintrag. Die MyISAM Engine kennt keinen Clustered-Index und verwendet ausschließlich Heap-Tabellen.

Die Oracle Datenbank kann Tabellen als Clustered-Index verwalten, nennt diese Funktion aber Index-organisierte Tabelle.

Vorherige SeiteNächste Seite

Du kannst nicht alles an einem Tag lernen. Abonniere den Newsletter via E-Mail, Twitter oder RSS um sukzessive aufzuholen. Und sieh dir auch modern-sql.com an.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„Use The Index, Luke!“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO | CC-BY-NC-ND 3.0 Lizenz