Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Primärschlüssel im Datetime-Feld

Wenn Sie sagen, dass die Daten einzigartig sein werden, meinen Sie damit, dass Sie denken sie einzigartig sein werden, oder ihre Einzigartigkeit durch die Problemstellung garantiert wird? Meiner Erfahrung nach stellen sich manche Dinge als viel weniger einzigartig heraus, als man sich vorstellt (US-Sozialversicherungsnummern sind ein Beispiel).

Wenn die Datumswerte nicht garantiert eindeutig sind, sollten Sie den ganzzahligen Schlüssel hinzufügen.

Wenn die Datumswerte garantiert eindeutig sind, ändern sie sich? Wenn sie sich ändern, werden sie von anderen Tabellen referenziert? Wenn beide Antworten "Ja" lauten, sollten Sie wahrscheinlich den Integer-Schlüssel hinzufügen.

Wenn die Datumswerte garantiert eindeutig sind und sich nicht ändern oder nicht referenziert werden, können Sie sie für den Schlüssel verwenden. Normale DATETIMEs sind 8 Bytes und Standard-INTEGER-Werte sind 4 Bytes, was sich geringfügig auf die Indizierung auswirken kann. Wenn Ihre Datumswerte nur Daten sind oder nur auf die Minute oder weniger genau und in dem eingeschränkteren Bereich liegen, den der Typ zulässt, können Sie SMALLDATETIME verwenden und diese Indexwerte auf 4 Bytes reduzieren.