Ohne einen gruppierten Index ist Ihre Tabelle als Heap organisiert. Dies bedeutet, dass jede Zeile, die eingefügt wird, auf der Datenseite am Ende der Tabelle hinzugefügt wird. Wenn Zeilen aktualisiert werden, werden sie auch auf die Datenseite am Ende der Tabelle verschoben, wenn die aktualisierten Daten größer als vorher sind.
Wenn es gut ist, nicht ein Clustered-Index
haben, wenn Sie eine Tabelle, die die schnellstmögliche Einsätze benötigt, kann aber Update opfern und Geschwindigkeit lesen, dann nicht einen Clustered-Index hat, kann für Arbeit Sie. Ein Beispiel wäre, wenn Sie eine Tabelle hätten, die als Warteschlange verwendet wird, zum Beispiel viele Einfügungen, die später einfach gelesen und in eine andere Tabelle verschoben werden.
Clustered-Indizes
Clustered-Indizes, die Daten in der Tabelle auf der Basis der Spalten in dem gruppierten Index organisieren. Wenn Sie zum Beispiel eine falsche ID cluntern, kann dies die Dinge verlangsamen (siehe unten).
Solange Ihr Clustered-Index den Wert aufweist, der am häufigsten für die Suche verwendet wird, und er ist eindeutig und erhöht, erhalten Sie einige erstaunliche Leistungsvorteile aus dem Clustered-Index.Wenn Sie beispielsweise eine Tabelle namens USERS haben, in der Sie üblicherweise Benutzerdaten auf der Basis von USER_ID nachschlagen, würde das Clustering auf USER_ID die Leistung all dieser Suchvorgänge beschleunigen. Dies reduziert einfach die Anzahl der Datenseiten, die gelesen werden müssen, um an Ihre Daten zu gelangen.
Wenn Sie zu viele Schlüssel in Ihrem Clustered-Index haben, kann dies auch die Dinge verlangsamen.
Allgemeine Regeln für Clustered-Indizes:
auf alle Varchar Spalten Cluster nicht.
Clustering auf INT IDENTITY-Spalten ist in der Regel am besten.
Cluster auf was Sie allgemein suchen.
Clustering auf UniqueIdentifiers
Mit uniqueidentifiers in einem Index sind sie extrem ineffizient, weil es keine natürliche Sortierreihenfolge ist. Basierend auf der B-Baum-Struktur des Indexes erhalten Sie extrem fragmentierte Indizes, wenn Sie Uniqueidentifiers verwenden. Nach dem Wiederaufbau oder der Umstrukturierung sind sie immer noch extrem fragmentiert. Sie haben also einen langsameren Index, der aufgrund der Fragmentierung im Speicher und auf der Festplatte sehr groß ist. Auch bei Einfügungen des Uniqueidentifiers ist es wahrscheinlicher, dass Sie mit einer Seitenaufteilung auf dem Index enden, wodurch Ihre Einfügung verlangsamt wird. Im Allgemeinen sind Uniqueidentifiers schlechte Nachrichten für Indizes.
Zusammenfassung
Meine Empfehlung ist, dass jeder Tisch auf sie einen Clustered-Index haben sollte, es sei denn, ein wirklich guter Grund, es nicht zu (dh Tabelle als eine Warteschlange funktioniert).
Hier ist eine verwandte Frage zu [DBA-SE] (http://dba.stackexchange.com/) mit einigen Informationen und ein paar Links, wo Sie weiterlesen können. [Leistung von nicht geclusterten Indizes auf Haufen im Vergleich zu geclusterten Indizes] (http://dba.stackexchange.com/questions/9829/performance-of-non-clustered-indexes-on-heaps-vs-clustered-indexes) –
Wahrscheinlich a Frage am besten von jemandem beantwortet, der mit Oracle und SQL Server vertraut ist. [dba.se] könnte ein besserer Ort dafür sein. –
Sie sollten diese Frage auch an dba.se senden. Es hatte zwei Kommentare und eine (rein zufällige) Antwort von DBA.SE-Stammgästen, ohne dass eines der anderen Poster tatsächlich annahm, dass gruppierte Indizes und IOTs tatsächlich signifikante Unterschiede aufweisen. – ConcernedOfTunbridgeWells