NOTA: Esta respuesta aborda el desarrollo de clase empresarial en general .
Este es un problema de RDBMS, no solo de SQL Server, y el comportamiento puede ser muy interesante. Por un lado, aunque es común que las claves primarias se indexen automáticamente (de forma única), NO es absoluto. Hay ocasiones en las que es esencial que una clave principal NO se indexe de forma única.
En la mayoría de los RDBMS, se creará automáticamente un índice único en una clave principal si aún no existe uno . Por lo tanto, puede crear su propio índice en la columna de clave principal antes de declararlo como clave principal, luego ese índice será utilizado (si es aceptable) por el motor de base de datos cuando aplique la declaración de clave principal. A menudo, puede crear la clave principal y permitir que se cree su índice único predeterminado, luego crear su propio índice alternativo en esa columna y luego eliminar el índice predeterminado.
Ahora, la parte divertida: ¿cuándo NO desea un índice de clave primaria único? No quiere uno, y no puede tolerarlo, cuando su tabla adquiere suficientes datos (filas) para que el mantenimiento del índice sea demasiado caro. Esto varía según el hardware, el motor RDBMS, las características de la tabla y la base de datos y la carga del sistema. Sin embargo, normalmente comienza a manifestarse una vez que una tabla alcanza algunos millones de filas.
El problema esencial es que cada inserción de una fila o actualización de la columna de clave principal da como resultado un análisis de índice para garantizar la exclusividad. Ese escaneo de índice único (o su equivalente en cualquier RDBMS) se vuelve mucho más costoso a medida que la tabla crece, hasta que domina el rendimiento de la tabla.
Me he ocupado de este problema muchas veces con tablas de hasta dos mil millones de filas, 8 TB de almacenamiento y cuarenta millones de inserciones de filas por día. Se me encomendó la tarea de rediseñar el sistema involucrado, que incluía eliminar el índice de clave primaria única prácticamente como el primer paso. De hecho, era necesario eliminar ese índice en la producción simplemente para recuperarse de una interrupción, incluso antes de acercarnos a un rediseño. Ese rediseño incluyó la búsqueda de otras formas de garantizar la singularidad de la clave principal y proporcionar un acceso rápido a los datos.