Quel type de données sql devrions-nous utiliser pour la clé primaire des bases numériques:
Généralement, int
.
bigint
si vous pensez que vous aurez plus de lignes qu'il n'y a d'atomes dans l'univers.
uniqueidentifier
est utile si vous avez besoin de globalement clés uniques (clés qui sont garanties uniques sur toutes les tables de votre schéma, peut-être même universellement uniques (je ne me souviens pas))
Les deux autres que je n'utiliserais pas ne sont pas des types intégraux (ils ont des fractions, qui n'ont tout simplement pas beaucoup de sens en tant que clés)
Vous devez vraiment séparer deux problèmes distincts:
1) le clé primaire est une construction logique - l'un des candidats clés qui identifie de manière unique et fiable une ligne de votre table. Cela peut être n'importe quoi, vraiment - un INT, un GUID, une chaîne - choisissez ce qui a le plus de sens pour votre scénario.
2) la clé de clustering (la ou les colonnes qui définissent "l'index clusterisé" sur la table) - ceci est une chose liée au stockage physique, et ici, une petite , le type de données stable et en constante augmentation est votre meilleur choix - INT ou BIGINT comme option par défaut.
Par défaut, la clé primaire d'une table SQL Server est également utilisée comme clé de cluster - mais cela n'a pas besoin d'être ainsi! Personnellement, il me semble que les performances ont considérablement augmenté au fil du temps lors de la décomposition de la clé primaire en cluster principale basée sur GUID en deux clés distinctes - la clé primaire (logique) du GUID et la clé de clustering (commande) sur une IDENTITÉ INT distincte (1 , 1) colonne.
La fragmentation de l'indice était descendue à des niveaux minimaux, et donc les performances de recherche d'index étaient à la hausse - fortement recommandé!
Marc
Une énorme raison de ne pas utiliser les GUID pour les PK est leur terrible taux de remplissage pour les pages d'index - une telle mauvaise utilisation peut considérablement augmenter vos coûts de performances d'E/S. Les GUID doivent être laissés sous forme d'AK et générer des requêtes avec des PK dérivés dans la mesure du possible.
pour les processeurs 32 bits, un int est probablement la taille la plus efficace pour le traitement.
GUID/UUID sont les meilleurs types de champs pour la clé primaire unique d'une table.
unsigned int
de la taille qui répond à vos besoins particuliers