Unterschied zwischen Cluster- und Nicht-Cluster-Index

Anonim

Cluster vs Non 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 beeinflussen. Der Oracle-Server kann seine Indizes ohne Beteiligung eines DBA automatisch beibehalten, 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. Bitmapindizes

3. Funktionsbasierte Indizes

4. Reverse-Key-Indizes

5. B-Tree-Cluster-Indizes

Was ist ein Non-Cluster-Index?

Aus den obigen Indextypen sind folgende nicht gruppierte Indizes.

• B-Baum-Index

• Bitmap-Index

• Funktionsbasierter Index

• Reverse-Key-Indizes

B-Tree-Indizes sind die am häufigsten verwendeten Indextypen von Datenbanken. 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.

Bitmapindizes werden erstellt, wenn die Spaltendaten nicht sehr selektiv sind. Das bedeutet, die Spaltendaten haben eine niedrige Kardinalität. Diese sind speziell für Data Warehouses konzipiert, und es ist nicht gut, Bitmap-Indizes für hochaktualisierbare oder transaktionale Tabellen zu verwenden.

Funktionsindizes stammen von Oracle 8i. Hier wird in der indizierten Spalte eine Funktion verwendet. In einem Funktionsindex werden daher die Spalten nicht normal sortiert. Es sortiert die Werte der Spalten nach dem Anwenden der Funktion. Diese sind sehr nützlich, wenn der WHERE-Aufruf der select-Abfrage eine Funktion verwendet.

Reverse-Key-Indizes sind ein sehr interessanter Indextyp. Nehmen wir an, eine Spalte enthält viele eindeutige String-Daten wie 'cityA', 'cityB', 'cityC' … usw. Alle Werte haben ein Muster. 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, kehrt Oracle die Zeichenfolge um und stellt sie in einem B-Tree-Index wieder her.

Die oben genannten Indextypen sind NICHT-CLUSTERED-Indizes. Das bedeutet, dass indizierte Daten außerhalb der Tabelle gespeichert werden und eine sortierte Referenz auf die Tabelle beibehalten wird.

Was ist ein Clustered-Index?

Geclusterte Indizes sind eine spezielle Art von Indizes. Es speichert Daten gemäß der Art und Weise, wie Tabellendaten physikalisch gespeichert werden. Es können also nicht viele gruppierte Indizes für eine Tabelle vorhanden sein. Eine Tabelle kann nur einen gruppierten Index haben.

Was ist der Unterschied zwischen gruppierten und nicht gruppierten Indizes?

1. Tabelle kann nur einen gruppierten Index enthalten, aber es können bis zu 249 nicht gruppierte Indizes in einer Tabelle vorhanden sein.

2. Der gruppierte 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, jedoch nicht in gruppierten Indizes.