13 Unterschied zwischen gruppiertem und nicht gruppiertem Index in SQL Server (mit Vergleichstabelle)

Contents

Was ist Indizierung?

Die Indizierung ist eine Möglichkeit, die Leistung einer Datenbank zu optimieren, indem die Anzahl der erforderlichen Plattenzugriffe bei der Verarbeitung einer Abfrage minimiert wird. Es ist eine Datenstrukturtechnik, die verwendet wird, um die Daten in einer Datenbank schnell zu finden und darauf zuzugreifen. In SQL Server gibt es zwei Arten von Indizes:

  • Clustered-Index
  • Nicht gruppierter Index

Was ist ein Clustered-Index?

Ein Clustered-Index ist ein spezieller Indextyp, der die physische Speicherung von Datensätzen in der Tabelle neu anordnet. Clustered-Indizes sortieren und speichern die Datenzeilen in der Tabelle oder Ansicht basierend auf ihren Schlüsselwerten. Dies sind die Spalten, die in der Indexdefinition enthalten sind. Es kann nur einen Clustered-Index pro Tabelle geben, da die Datenzeilen selbst nur in einer Reihenfolge gespeichert werden können. Die Datenzeilen in einer Tabelle werden nur dann in sortierter Reihenfolge gespeichert, wenn die Tabelle einen Clustered-Index enthält. Wenn eine Tabelle über einen gruppierten Index verfügt, wird die Tabelle als gruppierte Tabelle bezeichnet . Wenn eine Tabelle keinen Clustered-Index hat, werden ihre Datenzeilen in einer ungeordneten Struktur namens Heap gespeichert .

Was Sie über Clustered Index wissen müssen

  1. Ein Clustered-Index ist eine Art Datei, die die Informationen in der Tabelle nach ihren wichtigsten Eigenschaften sortiert.
  2. Es kann verwendet werden, um den Datensatz zu sortieren und den Index im physischen Speicher zu speichern.
  3. Die Größe des Clustered-Index ist ziemlich groß.
  4. Es speichert Datensätze im Blattknoten des Indexes.
  5. Beim gruppierten Index definiert der gruppierte Schlüssel die Reihenfolge der Daten innerhalb der Tabelle.
  6. Clustered-Indizes sind schneller zu lesen als Non-Clustered-Indizes, da die Daten physisch in der Indexreihenfolge gespeichert werden.
  7. Geclusterte Indexspeicherzeiger, um keine Daten zu blockieren.
  8. Eine Tabelle kann nur einen gruppierten Index haben.
  9. Es ist kein zusätzlicher Speicherplatz erforderlich, um die logische Struktur zu speichern.
  10. Ein gruppierter Index kann die Leistung des Datenabrufs verbessern.
  11. Es ist für Einfüge- und Aktualisierungsvorgänge langsamer als ein nicht gruppierter Index.
  12. Wenn die Tabelle keinen Clustered-Index hat, wird sie als ”Heap” bezeichnet.
  13. Ein Clustered-Index hat immer die Index-ID 0.

Was ist ein nicht gruppierter Index?

Ein nicht gruppierter Index ist ein Index, bei dem die Reihenfolge der Zeilen nicht mit der physischen Reihenfolge der tatsächlichen Daten übereinstimmt. Es ist stattdessen nach den Spalten geordnet, aus denen der Index besteht. In einem nicht gruppierten Index enthalten die Blattseiten des Index keine tatsächlichen Daten, sondern stattdessen Zeiger auf die tatsächlichen Daten. Diese Zeiger würden auf die gruppierte Indexdatenseite zeigen, auf der die tatsächlichen Daten vorhanden sind, oder auf die Heap-Seite, wenn kein gruppierter Index in der Tabelle vorhanden ist.

Ein nicht gruppierter Index in SQL Server speichert die Indexstruktur getrennt von den physisch in einer Tabelle gespeicherten Daten. Mit SQL Server können Sie fast 999 nicht gruppierte Indizes pro Tabelle erstellen. Der Zeiger von einer Indexzeile in einem nicht gruppierten Index auf eine Datenzeile wird als Zeilenlokator bezeichnet. Die Struktur des Zeilen-Locators hängt davon ab, ob die Datenseiten in einem Heap oder einer geclusterten Tabelle gespeichert sind. Bei einem Heap ist ein Zeilen-Locator ein Zeiger auf die Zeile. Bei einer gruppierten Tabelle ist der Zeilen-Locator der gruppierte Indexschlüssel. Sie können der Blattebene des nicht gruppierten Indexes Nichtschlüsselspalten hinzufügen, um vorhandene Indexschlüsselgrenzen zu umgehen und vollständig abgedeckte, indizierte Abfragen auszuführen.

Was Sie über nicht gruppierten Index wissen müssen

  1. Ein nicht gruppierter Index speichert die Metainformationen in einem Bereich und Dateien in einem anderen Bereich. Die Datei umfasst die Zeiger auf die Position dieser Informationen.
  2. Es erstellt eine logische Anordnung von Datenzeilen und verwendet Zeiger für den Zugriff auf die physischen Datendateien.
  3. Die Größe des nicht gruppierten Index ist im Vergleich zum gruppierten Index klein.
  4. Es speichert keine Datensätze im Blattknoten eines Indexes, was bedeutet, dass es zusätzlichen Platz für Daten benötigt.
  5. Es kann mit eindeutigen Einschränkungen arbeiten, die als zusammengesetzter Schlüssel fungieren.
  6. Nicht gruppierte Indizes sind im Lesevorgang langsamer als gruppierte Indizes.
  7. Nicht gruppierte Indizes speichern sowohl den Wert als auch einen Zeiger auf die tatsächliche Zeile, die Daten enthält.
  8. Eine Tabelle kann mehrere nicht gruppierte Indizes haben.
  9. Zum Speichern der logischen Struktur ist zusätzlicher Speicherplatz erforderlich.
  10. Nicht gruppierter Index erstellt die Spalten, die in Joins verwendet werden.
  11. Es ist für Einfüge- und Aktualisierungsvorgänge schneller als ein Clustered-Index.
  12. Eine Tabelle darf keine nicht gruppierten Indizes haben.
  13. Ein nicht gruppierter Index enthält immer eine Index-ID > 0.

Lesen Sie auch: Unterschied zwischen starker und schwacher Entität

Unterschied zwischen gruppiertem und nicht gruppiertem Index in Tabellenform

VERGLEICHSGRUNDLAGEGRUPPIERTER INDEXNICHT Gruppierter INDEX
BeschreibungEin Clustered-Index ist eine Art Datei, die die Informationen in der Tabelle nach ihren wichtigsten Eigenschaften sortiert.  Ein nicht gruppierter Index speichert die Metainformationen in einem Bereich und Dateien in einem anderen Bereich. Die Datei umfasst die Zeiger auf die Position dieser Informationen.  
FunktionEs kann verwendet werden, um den Datensatz zu sortieren und den Index im physischen Speicher zu speichern.  Es erstellt eine logische Anordnung von Datenzeilen und verwendet Zeiger für den Zugriff auf die physischen Datendateien.  
GrößeDie Größe des Clustered-Index ist ziemlich groß.  Die Größe des nicht gruppierten Index ist im Vergleich zum gruppierten Index klein.  
Speicherung von AufzeichnungenEs speichert Datensätze im Blattknoten des Indexes.  Es speichert keine Datensätze im Blattknoten eines Indexes, was bedeutet, dass es zusätzlichen Platz für Daten benötigt.  
SchlüsselBeim gruppierten Index definiert der gruppierte Schlüssel die Reihenfolge der Daten innerhalb der Tabelle.  Es kann mit eindeutigen Einschränkungen arbeiten, die als zusammengesetzter Schlüssel fungieren.  
Geschwindigkeit der LesevorgängeClustered-Indizes sind schneller zu lesen als Non-Clustered-Indizes, da die Daten physisch in der Indexreihenfolge gespeichert werden.  Nicht gruppierte Indizes sind im Lesevorgang langsamer als gruppierte Indizes.  
Speicherung von ZeigernGeclusterte Indexspeicherzeiger, um keine Daten zu blockieren.  Nicht gruppierte Indizes speichern sowohl den Wert als auch einen Zeiger auf die tatsächliche Zeile, die Daten enthält.  
TabellenzusammensetzungEine Tabelle kann nur einen gruppierten Index haben.  Eine Tabelle kann mehrere nicht gruppierte Indizes haben.  
Speicherung der logischen StrukturEs ist kein zusätzlicher Speicherplatz erforderlich, um die logische Struktur zu speichern.  Zum Speichern der logischen Struktur ist zusätzlicher Speicherplatz erforderlich.  
VorteilEin gruppierter Index kann die Leistung des Datenabrufs verbessern.  Nicht gruppierter Index erstellt die Spalten, die in Joins verwendet werden.  
Einfüge- und AktualisierungsvorgängeEs ist für Einfüge- und Aktualisierungsvorgänge langsamer als ein nicht gruppierter Index.  Es ist für Einfüge- und Aktualisierungsvorgänge schneller als ein Clustered-Index.  
TischWenn die Tabelle keinen Clustered-Index hat, wird sie als ”Heap” bezeichnet.  Eine Tabelle darf keine nicht gruppierten Indizes haben.  
Index-IDEin Clustered-Index hat immer die Index-ID 0.  Ein nicht gruppierter Index enthält immer eine Index-ID > 0.  

osky