Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kunci unik vs. indeks unik di SQL Server 2008

Batasan unik diterapkan di belakang layar sebagai indeks unik, jadi tidak masalah bagaimana Anda menentukannya. Saya cenderung menerapkannya hanya sebagai:

ALTER TABLE dbo.foo ADD CONSTRAINT UQ_bar UNIQUE(bar);

Beberapa orang malah membuat indeks unik, mis.

CREATE UNIQUE INDEX IX_UQ_Bar ON dbo.foo(bar);

Perbedaannya terletak pada tujuannya - jika Anda membuat batasan untuk menegakkan keunikan/aturan bisnis, Anda membuat batasan, jika Anda melakukannya untuk membantu kinerja kueri, mungkin lebih logis untuk membuat indeks unik. Sekali lagi, ini adalah implementasi yang sama, tetapi jalan yang Anda ambil untuk mencapainya mungkin membantu mendokumentasikan niat Anda.

Saya pikir ada beberapa opsi untuk mematuhi fungsionalitas Sybase sebelumnya serta untuk mematuhi standar ANSI (meskipun kendala unik tidak mematuhi standar 100%, karena mereka hanya mengizinkan satu nilai NULL - indeks unik, pada di sisi lain, dapat mengatasi ini dengan menambahkan WHERE klausa (WHERE col IS NOT NULL ) pada SQL Server 2008 dan yang lebih baru).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendiagnosis Deadlock di SQL Server 2005

  2. Bagaimana cara menambahkan xml encoding <?xml version=1.0 encoding=UTF-8?> ke xml Output di SQL Server

  3. Dasar-dasar Mengelola File Data di SQL Server

  4. Tidak dapat memuat SqlServerSpatial.dll

  5. T-SQL untuk menemukan Nama Server Jarak Jauh dari server yang ditautkan