1324 Stimmen

Was bedeuten eigentlich Clustered und Non-Clustered Index?

Ich habe nur eine begrenzte Erfahrung mit DB und habe DB nur als Anwendungsprogrammierer benutzt. Ich möchte wissen über Clustered y Non clustered indexes . Ich habe gegoogelt, und was ich gefunden habe, war :

Ein geclusterter Index ist ein spezieller Index-Typ, der die Reihenfolge der Datensätze in der Tabelle physikalisch gespeichert werden. Daher kann eine Tabelle nur einen geclusterten Index haben. Die Blattknoten eines geclusterten Indexes enthalten die Daten Seiten. Ein nonclustered Index ist ein spezielle Art von Index, bei dem die logische Reihenfolge des Indexes nicht mit der physisch gespeicherten Reihenfolge der der Zeilen auf der Festplatte übereinstimmt. Der Blattknoten eines nonclustered index besteht nicht aus den Datenseiten. Stattdessen enthalten die Blatt Knoten Indexzeilen enthalten.

Was ich in SO fand, war Was sind die Unterschiede zwischen einem geclusterten und einem nicht geclusterten Index? .

Kann jemand das in einfachem Englisch erklären?

5voto

Geclusterter Index - Ein geclusterter Index definiert die Reihenfolge, in der die Daten physisch in einer Tabelle gespeichert werden. Tabellendaten können nur auf eine Art und Weise sortiert werden, daher kann es nur einen geclusterten Index pro Tabelle geben. In SQL Server wird durch die Primärschlüssel-Beschränkung automatisch ein Cluster-Index für diese bestimmte Spalte erstellt.

Nicht-geclusterter Index - Ein nicht geclusterter Index sortiert die physischen Daten innerhalb der Tabelle nicht. Vielmehr wird ein nicht geclusterter Index an einem Ort gespeichert, während die Tabellendaten an einem anderen Ort gespeichert werden. Dies ist vergleichbar mit einem Lehrbuch, bei dem sich der Buchinhalt an einem Ort und der Index an einem anderen befindet. Es ist wichtig, hier zu erwähnen, dass die Daten innerhalb der Tabelle durch einen geclusterten Index sortiert werden. Innerhalb des nicht-geclusterten Index werden die Daten jedoch in der angegebenen Reihenfolge gespeichert. Der Index enthält die Spaltenwerte, für die der Index erstellt wurde, und die Adresse des Datensatzes, zu dem der Spaltenwert gehört. Wenn eine Abfrage für eine Spalte gestellt wird, für die der Index erstellt wurde, geht die Datenbank zuerst zum Index und sucht die Adresse der entsprechenden Zeile in der Tabelle. Dann wird sie zu dieser Zeilenadresse gehen und andere Spaltenwerte abrufen. Aufgrund dieses zusätzlichen Schritts sind nicht geclusterte Indizes langsamer als geclusterte Indizes.

Unterschiede zwischen geclustertem und nicht geclustertem Index

  1. Es kann nur einen geclusterten Index pro Tabelle geben. Sie können jedoch mehrere nicht-geclusterte Indizes auf einer einzigen Tabelle erstellen.
  2. Geclusterte Indizes sortieren nur Tabellen. Daher verbrauchen sie keinen zusätzlichen Speicherplatz. Nicht-geclusterte Indizes werden an einem anderen Ort gespeichert von der eigentlichen Tabelle gespeichert und beanspruchen mehr Speicherplatz.
  3. Geclusterte Indizes sind schneller als nicht geclusterte Indizes, da sie keinen zusätzlichen Suchschritt erfordern.

Weitere Informationen finden Sie unter este Artikel.

4voto

Abhishek Duppati Punkte 600

Geclusterter Index: Die Primärschlüssel-Beschränkung erstellt automatisch einen geclusterten Index, wenn noch kein geclusterter Index in der Tabelle vorhanden ist. Die tatsächlichen Daten des Clustered Index können auf Blattebene des Index gespeichert werden.

Nicht geclusterter Index: Die tatsächlichen Daten eines nicht geclusterten Index werden nicht direkt am Blattknoten gefunden, sondern es muss ein zusätzlicher Schritt unternommen werden, um sie zu finden, da nur die Werte der Zeilenlokatoren auf die tatsächlichen Daten verweisen. Ein nicht geclusterter Index kann nicht wie ein geclusterter Index sortiert werden. Es kann mehrere nicht geclusterte Indizes pro Tabelle geben, eigentlich hängt es von der Sql Server Version ab, die wir benutzen. Grundsätzlich erlaubt Sql Server 2005 249 Non Clustered Indexes und für höhere Versionen wie 2008, 2016 erlaubt es 999 Non Clustered Indexes pro Tabelle.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X