Unterschied zwischen Cluster- und Nicht-Cluster-Index

Cluster vs. Nicht-Cluster-Index

Indizes sind in jeder Datenbank sehr wichtig. Sie werden verwendet, um die Leistung beim Abrufen von Daten aus Tabellen zu verbessern. Sie sind logisch und physikalisch unabhängig von den Daten in den zugehörigen Tabellen. Daher können Indizes gelöscht, neu erstellt und neu erstellt werden, ohne dass dies Auswirkungen auf die Daten der Basistabellen hat. Der Oracle-Server kann seine Indizes ohne Beteiligung eines Datenbankadministrators automatisch verwalten, wenn die zugehörigen Tabellen eingefügt, aktualisiert und gelöscht werden. Es gibt verschiedene Indextypen. Hier sind einige davon.

1. B-Tree-Indizes

2. Bitmap-Indizes

3. Funktionsbasierte Indizes

4. Umkehrschlüsselindizes

5. B-Tree-Cluster-Indizes

Was ist ein Nicht-Cluster-Index??

Von den oben genannten Indextypen sind nicht gruppierte Indizes.

• B-Tree-Index

• Bitmap-Index

• Funktionsbasierter Index

• Umkehrschlüsselindizes

B-Tree-Indizes sind die am häufigsten verwendeten Indextypen. Wenn der Befehl CREATE INDEX für die Datenbank ausgegeben wird, ohne einen Typ anzugeben, erstellt der Oracle-Server einen B-Tree-Index. Wenn ein B-Tree-Index für eine bestimmte Spalte erstellt wird, speichert der Oracle-Server die Werte der Spalte und behält einen Verweis auf die tatsächliche Zeile der Tabelle bei.

Bitmap-Indizes werden erstellt, wenn die Spaltendaten nicht sehr selektiv sind. Das heißt, die Spaltendaten haben eine geringe Kardinalität. Diese wurden speziell für Data Warehouses entwickelt, und es ist nicht ratsam, Bitmap-Indizes für hoch aktualisierbare oder Transaktions-Tabellen zu verwenden.

Funktionsindizes stammen von Oracle 8i. Hier wird eine Funktion in der indizierten Spalte verwendet. Daher werden die Spaltendaten in einem Funktionsindex nicht auf normale Weise sortiert. Nach dem Anwenden der Funktion werden die Werte der Spalten sortiert. Diese sind sehr nützlich, wenn beim WHERE-Schließen der Auswahlabfrage eine Funktion verwendet wird.

Umkehrschlüsselindizes sind ein sehr interessanter Indextyp. Angenommen, eine Spalte enthält viele eindeutige Zeichenfolgendaten wie 'cityA', 'cityB', 'cityC' usw. Alle Werte weisen ein Muster auf. Die ersten vier Zeichen sind gleich und die nächsten Teile werden geändert. Wenn der REVERSE-Schlüsselindex für diese Spalte erstellt wird, wird Oracle die Zeichenfolge umkehren und in einem B-Tree-Index wiederherstellen.

Die oben genannten Indextypen sind NON-CLUSTERED-Indizes. Das heißt, indizierte Daten werden außerhalb der Tabelle gespeichert und ein sortierter Verweis auf die Tabelle bleibt erhalten. 

Was ist ein Clustered-Index??

Clustered-Indizes sind eine spezielle Art von Indizes. Es speichert Daten gemäß der Art und Weise, wie Tabellendaten physisch gespeichert werden. Es gibt also nicht viele Clustered-Indizes für eine Tabelle. Eine Tabelle kann nur einen Clusterindex haben.

Was ist der Unterschied zwischen gruppierten und nicht gruppierten Indizes??

1. Eine Tabelle kann nur einen Clustered-Index enthalten. Es können jedoch bis zu 249 nicht-Clustered-Indizes in einer Tabelle vorhanden sein.

2. Clustered-Index wird automatisch erstellt, wenn ein Primärschlüssel erstellt wird. Ein nicht-Clustered-Index wird jedoch erstellt, wenn ein eindeutiger Schlüssel erstellt wird.

3. Die logische Reihenfolge des Clustered-Index stimmt mit der physischen Reihenfolge der Tabellendaten überein, bei nicht-Clustered-Indizes jedoch nicht.