Clustered vs Non-Clustered Index: Hauptunterschiede mit Beispiel

Inhaltsverzeichnis:

Anonim

Was ist ein Index?

Ein Index ist ein Schlüssel, der aus einer oder mehreren Spalten in der Datenbank erstellt wird und das Abrufen von Zeilen aus der Tabelle oder Ansicht beschleunigt. Mit diesem Schlüssel kann eine Datenbank wie Oracle, SQL Server, MySQL usw. die mit Schlüsselwerten verknüpfte Zeile schnell finden.

Zwei Arten von Indizes sind:

  • Clustered Index
  • Nicht gruppierter Index

In diesem Tutorial lernen Sie:

  • Was ist ein Index?
  • Was ist ein Clustered-Index?
  • Was ist ein nicht gruppierter Index?
  • Charakteristik des Clustered Index
  • Merkmale von nicht gruppierten Indizes
  • Ein Beispiel für einen Clustered-Index
  • Ein Beispiel für einen nicht gruppierten Index
  • Unterschiede zwischen Clustered Index und NonClustered Index
  • Vorteile des Clustered Index
  • Vorteile des nicht gruppierten Index
  • Nachteile des Clustered Index
  • Nachteile des nicht gruppierten Index

Was ist ein Clustered-Index?

Der Clusterindex ist ein Indextyp, der die Datenzeilen in der Tabelle nach ihren Schlüsselwerten sortiert. In der Datenbank gibt es nur einen Clustered-Index pro Tabelle.

Ein Clustered-Index definiert die Reihenfolge, in der Daten in der Tabelle gespeichert werden, die nur auf eine Weise sortiert werden kann. Daher kann es für jede Tabelle nur einen einzigen Clustered-Index geben. In einem RDBMS können Sie normalerweise mit dem Primärschlüssel einen Clustered-Index erstellen, der auf dieser bestimmten Spalte basiert.

Was ist ein nicht gruppierter Index?

Ein nicht gruppierter Index speichert die Daten an einem Ort und Indizes an einem anderen Ort. Der Index enthält Zeiger auf die Position dieser Daten. Eine einzelne Tabelle kann viele nicht gruppierte Indizes enthalten, da ein Index im nicht gruppierten Index an verschiedenen Stellen gespeichert wird.

Beispielsweise kann ein Buch mehr als einen Index haben, einen am Anfang, der den Inhalt einer Bucheinheit weise anzeigt, während der zweite Index den Index der Begriffe in alphabetischer Reihenfolge anzeigt.

Ein Nicht-Clustering-Index wird im Nicht-Ordnungsfeld der Tabelle definiert. Diese Art der Indizierungsmethode hilft Ihnen, die Leistung von Abfragen zu verbessern, die Schlüssel verwenden, die nicht als Primärschlüssel zugewiesen sind. Mit einem nicht gruppierten Index können Sie einen eindeutigen Schlüssel für eine Tabelle hinzufügen.

SCHLÜSSELUNTERSCHIED

  • Der Clusterindex ist ein Indextyp, der die Datenzeilen in der Tabelle nach ihren Schlüsselwerten sortiert, während der nicht gruppierte Index die Daten an einem Ort und die Indizes an einem anderen Ort speichert.
  • Der Clustered-Index speichert Datenseiten in den Blattknoten des Index, während die Nicht-Clustered-Indexmethode niemals Datenseiten in den Blattknoten des Index speichert.
  • Für den Cluster-Index ist kein zusätzlicher Speicherplatz erforderlich, während für den Nicht-Cluster-Index zusätzlicher Speicherplatz erforderlich ist.
  • Der Cluster-Index bietet einen schnelleren Datenzugriff, während der Nicht-Cluster-Index langsamer ist.

Charakteristik des Clustered Index

  • Standard- und sortierter Datenspeicher
  • Verwenden Sie nur eine oder mehrere Spalten für einen Index
  • Hilft Ihnen, Daten und Index zusammen zu speichern
  • Zersplitterung
  • Operationen
  • Clustered Index Scan und Index Suche
  • Schlüsselsuche

Merkmale von nicht gruppierten Indizes

  • Nur Schlüsselwerte speichern
  • Zeiger auf Heap- / Clustered-Index-Zeilen
  • Ermöglicht den sekundären Datenzugriff
  • Brücke zu den Daten
  • Operationen von Index-Scan und Index-Suche
  • Sie können einen nicht gruppierten Index für eine Tabelle oder Ansicht erstellen
  • Jede Indexzeile im nicht gruppierten Index speichert den nicht gruppierten Schlüsselwert und einen Zeilenlokator

Ein Beispiel für einen Clustered-Index

Im folgenden Beispiel ist SalesOrderDetailID der Clustered-Index. Beispielabfrage zum Abrufen von Daten

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

Ein Beispiel für einen nicht gruppierten Index

Im folgenden Beispiel wird für OrderQty und ProductID wie folgt ein nicht verkrusteter Index erstellt

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

Die folgende Abfrage wird im Vergleich zum Clustered-Index schneller abgerufen.

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Unterschiede zwischen Clustered Index und NonClustered Index

Parameter Clustered Nicht geclustert
Verwenden für Sie können die Datensätze sortieren und den Clustered-Index gemäß der Reihenfolge physisch im Speicher speichern. Ein nicht gruppierter Index hilft Ihnen beim Erstellen einer logischen Reihenfolge für Datenzeilen und verwendet Zeiger für physische Datendateien.
Speichermethode Ermöglicht das Speichern von Datenseiten in den Blattknoten des Index. Diese Indizierungsmethode speichert niemals Datenseiten in den Blattknoten des Index.
Größe Der Clustered-Index ist ziemlich groß. Die Größe des nicht gruppierten Index ist im Vergleich zum gruppierten Index gering.
Datenzugriff Schneller Langsamer im Vergleich zum Clustered-Index
Zusätzlicher Speicherplatz Nicht benötigt Erforderlich, um den Index separat zu speichern
Schlüsseltyp Standardmäßig handelt es sich bei den Primärschlüsseln der Tabelle um einen Clustered-Index. Es kann mit einer eindeutigen Einschränkung für die Tabelle verwendet werden, die als zusammengesetzter Schlüssel fungiert.
Hauptmerkmal Ein Clustered-Index kann die Leistung beim Abrufen von Daten verbessern. Es sollte für Spalten erstellt werden, die in Verknüpfungen verwendet werden.

Vorteile des Clustered Index

Die Vorteile des Clustered-Index sind:

  • Clustered-Indizes sind eine ideale Option für Bereiche oder Gruppen mit Abfragen vom Typ max, min und count
  • Bei dieser Art von Index kann eine Suche direkt zu einem bestimmten Punkt in den Daten führen, sodass Sie von dort aus nacheinander weiterlesen können.
  • Die Clustered-Index-Methode verwendet den Standortmechanismus, um den Indexeintrag am Anfang eines Bereichs zu lokalisieren.
  • Dies ist eine effektive Methode für die Bereichssuche, wenn ein Bereich von Suchschlüsselwerten angefordert wird.
  • Hilft Ihnen, Seitentransfers zu minimieren und die Cache-Treffer zu maximieren.

Vorteile des nicht gruppierten Index

Vorteile der Verwendung von nicht gruppiertem Index sind:

  • Ein Nicht-Clustering-Index hilft Ihnen, Daten schnell aus der Datenbanktabelle abzurufen.
  • Hilft Ihnen, die mit dem Clustered-Index verbundenen Gemeinkosten zu vermeiden
  • Eine Tabelle kann mehrere nicht gruppierte Indizes in RDBMS enthalten. Es kann also verwendet werden, um mehr als einen Index zu erstellen.

Nachteile des Clustered Index

Hier sind die Vor- und Nachteile der Verwendung von Clustered-Index:

  • Viele Einfügungen in nicht sequentieller Reihenfolge
  • Ein Clustered-Index erstellt viele konstante Seitenteile, einschließlich Datenseiten und Indexseiten.
  • Zusätzliche Arbeit für SQL zum Einfügen, Aktualisieren und Löschen.
  • Ein Clustered-Index benötigt länger, um Datensätze zu aktualisieren, wenn die Felder im Clustered-Index geändert werden.
  • Die Blattknoten enthalten meist Datenseiten im Clustered-Index.

Nachteile des nicht gruppierten Index

Hier sind die Vor- und Nachteile der Verwendung eines nicht gruppierten Index:

  • Ein nicht gruppierter Index hilft Ihnen beim Speichern von Daten in einer logischen Reihenfolge, ermöglicht jedoch nicht das physische Sortieren von Datenzeilen.
  • Der Suchvorgang für nicht gruppierte Indizes wird kostspielig.
  • Jedes Mal, wenn der Clustering-Schlüssel aktualisiert wird, ist eine entsprechende Aktualisierung des nicht geclusterten Index erforderlich, da dieser den Clustering-Schlüssel speichert.