NOTA: Esta resposta aborda o desenvolvimento de classe empresarial em geral .
Este é um problema de RDBMS, não apenas do SQL Server, e o comportamento pode ser muito interessante. Por um lado, embora seja comum que as chaves primárias sejam indexadas automaticamente (exclusivamente), NÃO é absoluto. Há momentos em que é essencial que uma chave primária NÃO seja indexada exclusivamente.
Na maioria dos RDBMSs, um índice exclusivo será criado automaticamente em uma chave primária, caso ainda não exista . Portanto, você pode criar seu próprio índice na coluna de chave primária antes de declará-lo como uma chave primária, então esse índice será usado (se aceitável) pelo mecanismo de banco de dados quando você aplicar a declaração de chave primária. Freqüentemente, você pode criar a chave primária e permitir que seu índice exclusivo padrão seja criado e, em seguida, criar seu próprio índice alternativo nessa coluna e, em seguida, eliminar o índice padrão.
Agora, a parte divertida - quando você NÃO quer um índice de chave primária exclusivo? Você não quer um, e não pode tolerar um, quando sua tabela adquire dados (linhas) suficientes para tornar a manutenção do índice muito cara. Isso varia com base no hardware, no mecanismo RDBMS, nas características da tabela e do banco de dados e na carga do sistema. No entanto, geralmente começa a se manifestar quando uma tabela atinge alguns milhões de linhas.
O problema essencial é que cada inserção de uma linha ou atualização da coluna da chave primária resulta em uma varredura de índice para garantir a exclusividade. Essa varredura de índice exclusivo (ou seu equivalente em qualquer RDBMS) se torna muito mais cara à medida que a tabela cresce, até que domine o desempenho da tabela.
Já lidei com esse problema muitas vezes com tabelas de até 2 bilhões de linhas, 8 TB de armazenamento e 40 milhões de inserções de linha por dia. Fui encarregado de redesenhar o sistema envolvido, o que incluiu descartar o índice de chave primária exclusivo praticamente como primeiro passo. Na verdade, a redução desse índice foi necessária na produção simplesmente para se recuperar de uma interrupção, antes mesmo de chegarmos perto de um redesenho. Essa reformulação incluiu encontrar outras maneiras de garantir a exclusividade da chave primária e fornecer acesso rápido aos dados.