Was ist ein Index?
Ein Index ist ein Schlüssel, der aus einer oder mehreren Spalten in der Datenbank erstellt wurde 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-Clustered-Index
In diesem Lernprogramm , werden Sie lernen:
- Was ist ein Index?
- Was ist ein Clustered-Index?
- Was ist ein nicht gruppierter Index?
- Merkmale eines Clustered-Index
- Merkmale eines Nicht-Clustered-Index
- Ein Beispiel für einen Clustered-Index
- Ein Beispiel für einen Nicht-Clustered-Index Clustered-Index
- Unterschiede zwischen Clustered-Index und NonClustered-Index
- Vorteile des Clustered-Index
- Vorteile des Non-Clustered-Index
- Nachteile des Clustered-Index Index
- Nachteile eines nicht gruppierten Index
Was ist ein Clustered-Index?
Der Cluster-Index ist ein Indextyp, der die Datenzeilen sortiert in der Tabelle auf ihre Schlüsselwerte. 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 die 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 Feld „Nicht geordnet“ 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 speichert an einem Ort und Indizes an einem anderen Ort.
- Der Clustered-Index speichert Datenseiten in den Blattknoten des Index, während die Nicht-Clustered-Indexmethode niemals Datenseiten in den Blattknoten des Index speichert.
- Der Cluster-Index ist nicht erforderlich Zusätzlicher Speicherplatz, während der Nicht-Cluster-Index zusätzlichen Speicherplatz erfordert.
- Der Cluster-Index bietet einen schnelleren Datenzugriff. Der Nicht-Cluster-Index ist dagegen langsamer.
Charakteristik des Clustered-Index
- Standardspeicher und sortierte Datenspeicherung
- Verwenden Sie nur eine oder mehrere Spalten für einen Index
- Hilft Sie können Daten und Index zusammen speichern.
- Fragmentierung
- Operationen
- Clustered Index Scan und Indexsuche
- Key Lookup
Eigenschaften von nicht gruppierten Indizes
- Nur Schlüsselwerte speichern
- Zeiger auf Heap- / gruppierte Indexzeilen
- Ermöglicht sekundäre Daten Zugriff
- Brücke zu den Daten
- Operationen von Index-Scan und Index-Suche
- Sie können eine Non erstellen Clustered-Index für eine Tabelle oder Ansicht
- In jeder Indexzeile im Nonclustered-Index werden der nicht gruppierte Schlüsselwert und ein Zeilenlokator gespeichert.
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 ein nicht clustierter Index für OrderQty und ProductID wie folgt 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 Clustern Index und nicht gruppierter Index
Parameter | Clustered | Nicht gruppiert |
---|---|---|
Verwendung 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 | Die Größe des 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 erforderlich | Erforderlich, um den Index separat zu speichern |
Schlüsseltyp | Standardmäßig ist der Primärschlüssel der Tabelle ein 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 diesem Indextyp kann eine Suche direkt zu einem bestimmten Punkt in den Daten führen, sodass Sie kann von dort aus nacheinander weiterlesen.
- 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 eines nicht gruppierten Index
Die Verwendung eines nicht gruppierten Index bietet folgende Vorteile:
- Ein nicht gruppierter Index hilft Ihnen dabei um 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 des Clustered-Index:
- Viele Einfügungen in nicht sequentieller Form order
- 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 hauptsächlich Datenseiten im Clustered-Index.
Nachteile des nicht gruppierten Index
Hier sind die Vor- und Nachteile der Verwendung des nicht gruppierten Index: