Contents
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:
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 .
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.
Lesen Sie auch: Unterschied zwischen starker und schwacher Entität
VERGLEICHSGRUNDLAGE | GRUPPIERTER INDEX | NICHT Gruppierter INDEX |
Beschreibung | Ein 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. |
Funktion | Es 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öße | Die Größe des Clustered-Index ist ziemlich groß. | Die Größe des nicht gruppierten Index ist im Vergleich zum gruppierten Index klein. |
Speicherung von Aufzeichnungen | Es 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üssel | Beim 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änge | Clustered-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 Zeigern | Geclusterte 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. |
Tabellenzusammensetzung | Eine Tabelle kann nur einen gruppierten Index haben. | Eine Tabelle kann mehrere nicht gruppierte Indizes haben. |
Speicherung der logischen Struktur | Es ist kein zusätzlicher Speicherplatz erforderlich, um die logische Struktur zu speichern. | Zum Speichern der logischen Struktur ist zusätzlicher Speicherplatz erforderlich. |
Vorteil | Ein gruppierter Index kann die Leistung des Datenabrufs verbessern. | Nicht gruppierter Index erstellt die Spalten, die in Joins verwendet werden. |
Einfüge- und Aktualisierungsvorgänge | Es 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. |
Tisch | Wenn die Tabelle keinen Clustered-Index hat, wird sie als ”Heap” bezeichnet. | Eine Tabelle darf keine nicht gruppierten Indizes haben. |
Index-ID | Ein Clustered-Index hat immer die Index-ID 0. | Ein nicht gruppierter Index enthält immer eine Index-ID > 0. |
🍎 vs 🍏 - Ein knackiger Vergleich! Haben Sie sich jemals gefragt, warum es rote…
Haben Sie sich jemals gefragt, warum Sie manchmal bei Einkäufen Ihre PIN eingeben müssen und…
Haben Sie sich jemals gefragt, warum Ärzte manchmal eine CT-Untersuchung und in anderen Fällen ein…
Haben Sie sich jemals gefragt, warum manche Menschen von ihrem "Lohn" sprechen, während andere ihr…
Seide oder Baumwolle: Ein ewiger Wettstreit um Weichheit und Komfort 🧵🌿 Haben Sie sich jemals…
Haben Sie sich jemals gefragt, warum manche Radfahrer scheinbar mühelos Steigungen erklimmen, während andere ins…