NOTE: Cette réponse adresses de développement d'entreprise dans-le-grand.
C'est un SGBDR question, non seulement de SQL Server, et le comportement peut être très intéressant. Pour l'un, alors qu'il est commun pour les clés primaires pour être automatiquement (unique) indexé, il n'est PAS absolue. Il y a des moments où il est essentiel qu'une clé primaire ne PAS être indexés de façon unique.
Dans la plupart des Sgbdr, un index unique sera automatiquement créé sur une clé primaire si elle n'existe pas déjà. Par conséquent, vous pouvez créer votre propre index sur la colonne de clé primaire avant de la déclarer comme une clé primaire, alors que l'index sera utilisé (si accepté) par le moteur de base de données lorsque vous appliquez la clé primaire de la déclaration. Souvent, vous pouvez créer la clé primaire et de permettre à sa valeur par défaut index unique pour être créé, puis de créer votre propre alternative index sur cette colonne, puis déposez l'index par défaut.
Maintenant pour la partie amusante-quand avez-vous PAS envie d'un index de clé primaire unique? Vous n'en voulez pas, et ne peuvent pas tolérer, quand votre table acquiert suffisamment de données (lignes) pour faire l'entretien de l'index est trop cher. Cela varie en fonction du matériel, le SGBDR moteur, les caractéristiques de la table et la base de données, et le système de charge. Cependant, il commence généralement à se manifester une fois une table atteint quelques millions de lignes.
La question essentielle est que chaque insertion d'une ligne ou d'une mise à jour de la colonne de clé primaire de résultats dans une analyse d'index pour garantir l'unicité. Que index unique scan (ou son équivalent dans n'importe quel SGBDR) devient beaucoup plus cher que le tableau grandit, jusqu'à ce qu'il domine la performance de la table.
J'ai abordé cette question à plusieurs reprises avec des tables aussi grand que deux milliards de lignes, 8 to de stockage, et de quarante millions d'insertions de lignes par jour. J'ai été chargé de la refonte du système concerné, ce qui inclus abandon de l'index de clé primaire unique pratiquement que de la première étape. En effet, la baisse que l'indice a été nécessaire dans la production de récupérer à partir d'une coupure de courant, avant même de monter près d'une refonte. Cette refonte de trouver d'autres moyens d'assurer l'unicité de la clé primaire et de fournir un accès rapide aux données.