Respostas:
Uma diferença principal é que o índice exclusivo pode ter um valor NULL que não é permitido na chave primária. Em cluster ou não, essa é a principal diferença entre a implementação prática de uma Chave Primária e uma Chave Única.
Ah, e o fato de uma mesa ter um PK e muitos UK :-).
Ambas são diferenças em INTENT e não em DESEMPENHO. Caso contrário, não acho que haja diferença. Por trás de qualquer PK ou Reino Unido, o SQL Server cria um índice (dependendo da solicitação, agrupada ou não) e a maneira como é usada é transparente para a origem.
PRIMARY KEY
e NOT NULL UNIQUE
, o primeiro seria muito mais difícil de se transformar NULL UNIQUE
(principalmente se a restrição já tiver sido referenciada por uma chave estrangeira). Certamente impediria alterações acidentais de NOT NULL
para NULL
.
Entre uma chave primária em cluster e um índice em cluster exclusivo, não há outro diferente, pois o índice em cluster exclusivo pode ter um valor NULL.
Um índice em cluster não exclusivo possui um identificador exclusivo que deve ser tratado para valores não exclusivos.
NOT NULL UNIQUE CLUSTERED
ou (B) para destacar que um UQ específico é "especial" no sentido de metadados, mesmo que o RDMS seja agnóstico?