2009-02-24 6 views

Antwort

25

Nein, es kann nicht gruppiert sein. Wenn Sie ihn jedoch nicht explizit als nicht gruppiert definieren und kein Clustered-Index für die Tabelle vorhanden ist, wird er als Cluster erstellt.

10

Man könnte auch hinzufügen, dass es oft SCHLECHT ist, den Primärschlüssel zu gruppieren. Insbesondere, wenn der Primärschlüssel durch eine IDENTITÄT zugewiesen ist, hat er keine intrinsische Bedeutung, so dass jede Anstrengung, die Tabelle entsprechend zu halten, verschwendet würde.

Betrachten Sie eine Tabelle Produkt, mit ProductID INT IDENTITY PRIMARY KEY. Wenn dies gruppiert ist, werden Produkte, die in irgendeiner Weise verwandt sind, wahrscheinlich über die gesamte Platte verteilt. Es könnte besser sein, nach etwas zu gruppieren, auf dem wir wahrscheinlich abfragen werden, wie die ManufacturerID oder die CategoryID. In jedem dieser Fälle würde ein gruppierter Index (da andere Dinge gleich sind) die entsprechende Abfrage viel effizienter machen.

Auf der anderen Seite könnte der Fremdschlüssel in einer untergeordneten Tabelle, die darauf verweist, ein guter Kandidat für Clustering sein (mein Einwand bezieht sich auf die Spalte, die tatsächlich das IDENTITY-Attribut hat, nicht seine Verwandten). In meinem obigen Beispiel ist es also wahrscheinlich, dass ManufacturerID ein Fremdschlüssel für eine Manufacturer-Tabelle ist, wo sie als IDENTITY festgelegt wird. Die Spalte sollte nicht gruppiert sein, aber die Spalte in Produkt, das darauf verweist, könnte dies zu einem guten Ergebnis machen.

+1

Das Vorhandensein von Identität in den meisten Fällen bedeutet, dass Zugriff auf Datensätze über ihre Identität wird, so scheint der gruppierte Primärschlüssel auf Identität Feld eine gute Idee zu sein. –

+2

@ C-F - das ist kein Grund zum Clustering. Wenn Sie basierend auf diesem Primärschlüssel abfragen, wird der Index Sie dorthin bringen. Und möglicherweise auch schneller, da es mit ziemlicher Sicherheit weniger IOs benötigt, um einen relativ engen Index im Vergleich zur vollen Breite der Zeilen im Clustered-Index zu erreichen. –

Verwandte Themen