Jawaban:
Satu perbedaan utama adalah bahwa indeks unik dapat memiliki nilai NULL yang tidak diizinkan di kunci utama. Berkelompok atau tidak, ini adalah perbedaan utama antara implementasi praktis dari Kunci Utama versus Kunci Unik.
Oh, dan fakta bahwa sebuah meja dapat memiliki satu PK dan banyak UK :-).
Keduanya adalah perbedaan dalam INTENT, bukan dalam KINERJA. Kalau tidak, saya tidak berpikir ada perbedaan. Di belakang PK atau UK mana pun, SQL Server membuat indeks (tergantung pada permintaan, berkerumun atau tidak) dan cara yang digunakan transparan untuk sumbernya.
PRIMARY KEY
dan NOT NULL UNIQUE
, yang pertama akan lebih sulit untuk berubah menjadi NULL UNIQUE
(terutama jika kendala sudah dirujuk oleh kunci asing). Pasti akan mencegah perubahan yang tidak disengaja dari NOT NULL
ke NULL
.
Antara kunci primer berkerumun dan indeks berkerumun unik tidak ada yang berbeda selain indeks berkerumun unik dapat memiliki nilai NULL.
Indeks berkerumun non-unik memiliki pemisah yang harus ditangani untuk nilai-nilai non-unik.
NOT NULL UNIQUE CLUSTERED
atau (B) untuk menyoroti bahwa UQ tertentu adalah "istimewa" dalam arti metadata, meskipun RDMS bersifat agnostik?