Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Unikalny klucz a unikalny indeks w SQL Server 2008

Unikalne ograniczenie jest implementowane za kulisami jako unikalny indeks, więc tak naprawdę nie ma znaczenia, jak je określisz. Zwykle implementuję to po prostu jako:

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

Niektórzy ludzie zamiast tego tworzą unikalny indeks, np.

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

Różnica jest w intencji - jeśli tworzysz ograniczenie w celu wymuszenia unikalności/reguł biznesowych, tworzysz ograniczenie, jeśli robisz to w celu zwiększenia wydajności zapytań, bardziej logiczne może być utworzenie unikalnego indeksu. Ponownie, pod osłonami jest to ta sama implementacja, ale droga, którą podążasz, może pomóc w udokumentowaniu Twoich zamiarów.

Myślę, że istnieje wiele opcji przestrzegania zarówno poprzedniej funkcjonalności Sybase, jak i standardu ANSI (nawet jeśli unikalne ograniczenia nie są zgodne ze standardem w 100%, ponieważ dopuszczają tylko jedną wartość NULL — unikalny indeks, w z drugiej strony można to obejść, dodając WHERE klauzula (WHERE col IS NOT NULL ) na SQL Server 2008 i nowszych).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zapytanie sql — pobierz różnicę czasu między przeciągnięciem — przesuń palcem dla pracownika

  2. Jak zwrócić wartość kodu ASCII dla danego znaku w SQL Server

  3. Korzystanie z pamięci masowej Intel Optane w programie SQL Server

  4. Jak działa IIF() w SQL Server

  5. Jak przekonwertować obraz na tablicę bajtów za pomocą javascript tylko do przechowywania obrazu na serwerze sql?