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 die Daten der Basistabellen zu beeinträchtigen. Der Oracle-Server kann seine Indizes automatisch ohne Beteiligung eines DBA pflegen, wenn die zugehörigen Tabellen eingefügt, aktualisiert und gelöscht werden. Es gibt mehrere Indextypen. Hier sind einige davon.
1. B-Tree-Indizes
2. Bitmap-Indizes
3. Funktionsbasierte Indizes
4. Reverse-Key-Indizes
5. B-Tree-Cluster-Indizes
Was ist ein Nicht-Cluster-Index?
Von den obigen Indextypen sind die folgenden nicht gruppierten Indizes.
• B-Tree-Index
• Bitmap-Index
• Funktionsbasierter Index
• Reverse-Key-Indizes
B-Tree-Indizes sind der am weitesten verbreitete Indextyp von Datenbanken. Wenn der CREATE INDEX-Befehl 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 Sp alte erstellt wird, speichert der Oracle-Server die Werte der Sp alte und behält einen Verweis auf die tatsächliche Zeile der Tabelle bei.
Bitmap-Indizes werden erstellt, wenn die Sp altendaten nicht sehr selektiv sind. Das bedeutet, dass die Sp altendaten eine niedrige Kardinalität haben. Diese wurden speziell für Data Warehouses entwickelt, und es ist nicht gut, Bitmap-Indizes für stark aktualisierbare oder Transaktionstabellen zu verwenden.
Funktionale Indizes kommen von Oracle 8i. Hier wird eine Funktion in der indizierten Sp alte verwendet. Daher werden Sp altendaten in einem funktionalen Index nicht auf die normale Weise sortiert. Es sortiert die Werte der Sp alten nach Anwendung der Funktion. Diese sind sehr nützlich, wenn das WHERE-Schließen der Auswahlabfrage als Funktion verwendet wird.
Reverse-Key-Indizes sind ein sehr interessanter Indextyp. Nehmen wir an, eine Sp alte enthält viele eindeutige Zeichenfolgedaten wie „cityA“, „cityB“, „cityC“usw. Alle Werte haben ein Muster. Die ersten vier Zeichen sind gleich und die nächsten Teile wurden geändert. Wenn also ein REVERSE-Schlüsselindex für diese Sp alte erstellt wird, kehrt Oracle die Zeichenfolge um und stellt sie in einem B-Tree-Index wieder her.
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 erh alten.
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 kann also nicht viele Clustered-Indizes für eine Tabelle geben. Eine Tabelle kann nur einen gruppierten Index haben.
Was ist der Unterschied zwischen geclusterten und nicht geclusterten Indizes?
1. Eine Tabelle kann nur einen geclusterten Index haben, aber es können bis zu 249 nicht geclusterte Indizes in einer Tabelle vorhanden sein.
2. Ein gruppierter Index wird automatisch erstellt, wenn ein Primärschlüssel erstellt wird, aber ein nicht gruppierter Index wird erstellt, wenn ein eindeutiger Schlüssel erstellt wird.
3. Die logische Reihenfolge des gruppierten Index stimmt mit der physischen Reihenfolge der Tabellendaten überein, bei nicht gruppierten Indizes jedoch nicht.