Ich möchte herausfinden, was die Königin der Indexierung, Kimberly Tripp, zu diesem Thema zu sagen hat:
Ich werde mit meiner Empfehlung für den Clustering-Schlüssel beginnen - aus mehreren Gründen. Erstens ist es eine einfache Entscheidung, und zweitens hilft eine frühzeitige Entscheidung, einige Arten der Fragmentierung proaktiv zu verhindern. Wenn Sie bestimmte Arten der Fragmentierung von Basistabellen verhindern können, können Sie einige Wartungsaktivitäten minimieren (von denen einige in SQL Server 2000 und weniger in SQL Server 2005 erfordern, dass Ihre Tabelle offline ist. OK, ich komme später zum Wiederaufbau .....
Beginnen wir mit den wichtigsten Dingen, nach denen ich in einem Clustering-Schlüssel suche:
* Unique
* Narrow
* Static
Warum einzigartig?
Ein Clustering-Schlüssel sollte eindeutig sein, da ein Clustering-Schlüssel (sofern vorhanden) als Suchschlüssel für alle nicht geclusterten Indizes verwendet wird. Nehmen Sie zum Beispiel einen Index am Ende eines Buches. Wenn Sie die Daten suchen müssen, auf die ein Indexeintrag verweist, muss dieser Eintrag (der Indexeintrag) andernfalls eindeutig sein. Welcher Indexeintrag ist derjenige, nach dem Sie suchen ? Wenn Sie also den Clustered-Index erstellen, muss er eindeutig sein. Für SQL Server ist es jedoch nicht erforderlich, dass Ihr Clustering-Schlüssel in einer eindeutigen Spalte erstellt wird. Sie können es für jede gewünschte Spalte erstellen. Wenn der Clustering-Schlüssel intern nicht eindeutig ist, wird er von SQL Server durch Hinzufügen einer 4-Byte-Ganzzahl zu den Daten "eindeutig". Wenn der Clustered-Index für etwas erstellt wird, das nicht eindeutig ist, entsteht bei der Indexerstellung nicht nur zusätzlicher Aufwand, sondern auch Speicherplatz.
Quelle: Immer mehr Clustering-Schlüsseldebatte - wieder!