Ist nicht wirklich wichtig - aber ist die DateTime wirklich garantiert einzigartig? Ich würde VERMEIDEN, einen geclusterten Index nur auf eine DateTime zu setzen - ich würde stattdessen eine INT IDENTITY oder BIGINT IDENTITY verwenden und einen regulären nicht geclusterten Index auf DateTime setzen (da das wirklich nicht garantiert ist, einzigartig zu sein ......)
Marc
PS: Wie ein Primärschlüssel, der allgemeine Konsens darüber, was ein Cluster-Schlüssel sollte ist:
- einzigartige (sonst SQL Server wird "uniquify" durch einen 4- Hinzufügen Byte-Unifier dazu)
- als schmale wie möglich
- statische (nie ändern)
- je zunehmende
die Spalte (n), die den Clusterschlüssel bilden (einschließlich der 4-Byte-uniqueifier) werden zu JEDER EINTRAG in JEDEM nicht gruppierten Index - also möchten Sie diese so schlank wie möglich halten.
PS 2: Die Clusterschlüssel werden jedem nicht gruppierten Index hinzugefügt, da SQL Server so alle Zeilen abruft, wenn der Suchwert im nicht gruppierten Index gefunden wurde. Es ist sozusagen der "Ort" der Reihe in der Datenbank. Daher sollte es einmalig und eng sein.
Ein Clustered-Index muss also eindeutig sein? – Eyvind
Wenn es * NOT * eindeutig ist, dann fügt SQL Server automatisch einen 4-Byte "Unifier" hinzu - wenn immer möglich, versuchen Sie das zu vermeiden! –
Danke, wusste das nicht. Wenn die fragliche Tabelle eine PK hat, die eine eindeutige Kennung ist, wäre es dann besser, den Clustered-Index für das Datetime-Feld UND die PK zu erstellen? – Eyvind