Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Clé primaire SQL Server sur le champ datetime

Quand vous dites que les dates seront uniques, voulez-vous dire que vous pensez seront-ils uniques, ou leur unicité est-elle garantie par l'énoncé du problème ? D'après mon expérience, certaines choses s'avèrent beaucoup moins uniques qu'on ne l'imagine (les numéros de sécurité sociale américains en sont un exemple).

Si les valeurs de date ne sont pas garanties uniques, vous devez ajouter la clé entière.

Si les valeurs de date sont garanties uniques, changent-elles ? S'ils changent, sont-ils référencés par d'autres tables ? Si les deux réponses sont "oui", vous devriez probablement ajouter la clé entière.

Si les valeurs de date sont garanties uniques et ne changent pas ou ne sont pas référencées, vous pouvez les utiliser pour la clé. Les DATETIME réguliers sont de 8 octets et les valeurs INTEGER standard sont de 4 octets, ce qui peut avoir un effet mineur sur l'indexation. Si vos valeurs de date ne sont que des dates, ou seulement exactes à la minute ou moins, et dans la plage plus restreinte autorisée par le type, vous pouvez utiliser SMALLDATETIME et obtenir ces valeurs d'index jusqu'à 4 octets.