Was ist der Unterschied zwischen gruppiertem und nicht gruppiertem Index?

Das Hauptunterschied zwischen gruppierten und nicht gruppierten Index ist das Es gibt nur einen Cluster-Index pro Tabelle, während es mehrere nicht-Cluster-Indizes pro Tabelle gibt.

Zunächst einmal ist die Indizierung eine Technik, mit der Datensätze einfach und effizient aus den Datenbankdateien abgerufen werden können. Es beschleunigt die Abfrageleistung für die Clientanwendungen, die die Datenbank verwenden. Darüber hinaus gibt es zwei Arten von Indizes als gruppierte und nicht gruppierte Indizes. Clustered Index ändert die Reihenfolge, in der die Daten auf der Festplatte gespeichert sind. In einem nicht gruppierten Index stimmt die logische Reihenfolge des Index jedoch nicht mit der physischen Reihenfolge der auf der Festplatte gespeicherten Daten überein.

Wichtige Bereiche

1. Was ist ein Index?
     - Definition, Funktionalität
2. Was ist ein Clustered-Index?
     - Definition, Funktionalität
3. Was ist ein Nonclustered-Index?
     - Definition, Funktionalität
4. Was ist der Unterschied zwischen gruppiertem und nicht gruppiertem Index?
     - Vergleich der wichtigsten Unterschiede

Schlüsselbegriffe

Clustered Index, Nonclustered Index

Was ist ein Index?

Nehmen Sie eine Tabelle an, in der die Details des Kunden gespeichert sind. Es hat drei Spalten als Vorname, Nachname und Kontaktnummer. Wenn die Tabelle keine Indizes enthält, werden die Daten ohne besondere Reihenfolge in die freien Speicherplätze des Speichers eingefügt. Wenn der Benutzer die Telefonnummer eines bestimmten Kunden anfordert, müssen die Daten von Anfang an gesucht werden. Obwohl wir die Daten erhalten, ist es notwendig, bis zum Ende fortzufahren, da am Ende übereinstimmende Daten vorhanden sein können. Indizes sind in diesen Situationen hilfreich.

Was ist ein Clustered-Index?

Ein Clustered-Index ändert die Reihenfolge, in der die Daten physisch gespeichert werden. Nachdem die Tabellendaten in der physischen Reihenfolge sind, erstellt das DBMS Indexseiten. Sie helfen, leicht zu den erforderlichen Daten zu navigieren. Die gesamte Struktur mit den Basistabellendaten wird als Clustered-Index bezeichnet. Der Prozess einer Abfrage, die durch die Clustered-Index-Struktur zu den Basistabellendaten navigiert, wird als Clustered-Index-Suche bezeichnet. Es gibt einen Clustered-Index pro Tabelle, da es unmöglich ist, Daten auf zwei verschiedene Arten physisch anzuordnen, ohne separate Strukturen zu verwenden.

Was ist ein Nonclustered-Index?

Ein nicht gruppierter Index sortiert die physischen Daten in der Tabelle nicht. Der Index und die Tabelle werden an verschiedenen Orten gespeichert. Darüber hinaus gibt es Zeiger oder Verweise auf die Daten in der Tabelle. Es ist möglich, Daten in beliebiger Reihenfolge zu speichern, da diese Reihenfolge unabhängig von den Daten der Basistabelle ist. Daher kann es pro Tabelle mehr als einen nicht gruppierten Index geben. Die Daten in der Basistabelle befinden sich in Heap, während die Referenzen die Zeilenbezeichner sind.

Wenn Sie eine Abfrage für eine Spalte ausführen, wechselt die Datenbank zuerst zum Index und sucht nach der Adresse der entsprechenden Zeile in der Tabelle. Dann geht es zur Zeilenadresse und holt andere Spaltenwerte. Daher sind nicht gruppierte Indizes langsamer als gruppierte Indizes. Wenn in der Tabelle ein eindeutiger Schlüssel definiert ist, wird automatisch ein nicht gruppierter Index erstellt.

Unterschied zwischen gruppiertem und nicht gruppiertem Index

Definition

Ein Clustered-Index ist ein Indextyp, bei dem die Tabellendatensätze physisch neu geordnet werden, um mit dem Index übereinzustimmen. Ein nicht gruppierter Index ist dagegen ein spezieller Indextyp, bei dem die logische Reihenfolge des Index nicht mit der physisch gespeicherten Reihenfolge der Zeilen auf der Festplatte übereinstimmt. Diese Definitionen erklären den Unterschied zwischen gruppiertem und nicht gruppiertem Index.

Anzahl der Indizes

Die Anzahl der Indizes pro Tabelle ist ein Hauptunterschied zwischen gruppierten und nicht gruppierten Indizes. Eine Tabelle kann einen einzelnen gruppierten Index, jedoch mehrere nicht gruppierte Indizes haben.

Funktionalität

Clustered Index speichert keine Zeiger auf die tatsächlichen Daten. Ein nicht gruppierter Index speichert jedoch sowohl den Wert als auch einen Zeiger auf die tatsächliche Zeile, die Daten enthält. Dies ist also ein weiterer Unterschied zwischen gruppiertem und nicht gruppiertem Index.

Reihenfolge der Speicherung von Daten

Darüber hinaus bestimmt ein Cluster-Index die Reihenfolge der Speicherung der Daten auf der Festplatte, während ein nicht gruppierter Index keine Auswirkungen auf die Reihenfolge der Daten auf der Festplatte hat.

Erforderlicher Speicherplatz

Darüber hinaus erfordert ein nicht gruppierter Index mehr Speicherplatz als ein gruppierter Index.

Geschwindigkeit

Die Geschwindigkeit ist ein weiterer Unterschied zwischen gruppiertem und nicht gruppiertem Index. Nicht gruppierte Indizes sind langsamer als gruppierte Indizes.

Fazit

Es gibt zwei Arten von Indizes als gruppierte und nicht gruppierte Indizes. Der Unterschied zwischen gruppierten und nicht gruppierten Indizes besteht darin, dass es nur einen gruppierten Index pro Tabelle gibt, während es mehrere nicht gruppierte Indizes pro Tabelle gibt. Kurz gesagt, ein nicht gruppierter Index ist langsamer und benötigt mehr Platz als ein gruppierter Index.

Referenz:

1. Yadav, Durgaprasad. "Index in Sql Server." LinkedIn SlideShare, 21. November 2015, hier verfügbar.
2. Rahaman, Mahabubur. „Einführung in die SQL Server-Indexierung“. LinkedIn SlideShare, 23. Mai 2015, hier verfügbar.

Bildhöflichkeit:

1. "Databases logo" Von Borjasotomayor bei English Wikibooks (CC BY-SA 3.0) über Commons Wikimedia