Creating Unique Indexes

Tworzenie indeks unikatowy gwarancji, że każda próba zduplikowane wartości kluczy nie powiedzie się.Nie ma istotnych różnic między tworzeniem ograniczenie typu UNIQUE i tworzenie indeks unikatowy jest niezależna od ograniczenia.Sprawdzanie poprawności danych występuje w taki sam sposób, a optymalizator kwerendy nie odróżnić indeks unikatowy, utworzona przez ograniczenie lub utworzone ręcznie.Jednak należy utworzyć ograniczenia typu UNIQUE, na podstawie kolumna, gdy celem jest integralność danych.Dzięki temu celem indeksu wyczyszczone.

Typowe implementacje

Unikatowe indeksy są wykonywane w następujący sposób:

  • Ograniczenia klucz podstawowy lub UNIQUE

    Podczas tworzenia ograniczenia klucz podstawowy, unikatowego indeks klastrowany na kolumna lub kolumn jest automatycznie tworzone, jeśli indeks klastrowany w tabela nie ma już istnieje i nie zostanie określony unikatowy nie indeks klastrowany.Kolumna klucz podstawowy nie mogą zezwolić na wartości NULL.

    Podczas tworzenia ograniczenia typu UNIQUE do wymuszania ograniczenia typu UNIQUE domyślnie tworzony jest unikatowy indeks nieklastrowany.Użytkownik może określić unikatowego indeks klastrowany indeks klastrowany w tabela nie ma już istnieje.

    Aby uzyskać więcej informacji zobacz PRIMARY KEY Constraints i UNIQUE Constraints.

  • Niezależnie od ograniczenie indeksu

    W tabela można zdefiniować wiele unikatowych ponownego zbudowania indeksów nie klastrowanych.

    Aby uzyskać więcej informacji zobaczCREATE INDEX (języka Transact-SQL).

  • Widok indeksowany

    Aby utworzyć widok indeksowany, unikatowy indeks klastrowany jest zdefiniowany na jednej lub kilku kolumn widoku.Widok zostanie wykonana (materialized) i zestaw wyników jest przechowywany na poziomie poziom liścia indeksu w taki sam sposób, jak dane w tabela są przechowywane w indeksie klastrowanym.Aby uzyskać więcej informacji zobaczTworzenie indeksowanych widoki.

Rozwiązywanie problemów wartość duplikatu

Nie można utworzyć indeksu unikatowego ani ograniczenia, jeśli istnieją zduplikowane wartości w klucz kolumn.Na przykład, jeśli chcesz utworzyć indeks unikatowy złożony w kolumnach Imię and Nazwisko, ale istnieją dwa wiersze w tabela, które zawierają wartości **"Jan"**and 'Smith' in the Imię and Nazwiskokolumn, nie można utworzyć unikatowego indeksu.Problem można rozwiązać na jeden z następujących sposobów:

  • Dodawanie lub usuwanie kolumn w definicji indeksu, aby utworzyć unikatowy projekt wstępny.W poprzednim przykładzie Dodawanie MiddleName kolumna z definicji indeksu może rozwiązać dublowania.

  • Jeśli wartości zduplikowanych są wynikiem błędów przy wprowadzaniu danych, ręcznie usunąć dane, a następnie utworzyć indeks lub ograniczenie.

Za pomocą opcji IGNORE_DUP_KEY do wartości zduplikowany uchwyt

Podczas tworzenia lub modyfikowania indeks unikatowy lub ograniczenie, zestaw opcję IGNORE_DUP_KEY ON lub OFF.Ta opcja określa odpowiedzi błąd podczas próby wstawienia duplikat operację wstawiania klucz wartości do unikatowego indeksu.Opcja IGNORE_DUP_KEY dotyczy tylko wstawianie operacji po utworzeniu indeksu lub ponownie.Nie ma opcji kiedy efektu TWORZENIE INDEKSU, ZMIANA INDEKSU, or AKTUALIZACJA jest wykonywany.Wartością domyślną jest OFF.

  • DALEJ
    Komunikat ostrzegawczy zostanie przeprowadzona, gdy zduplikowane klucz wartości są wstawiane do unikatowego indeksu.Tylko wiersze naruszenie ograniczenia unikatowości nie powiedzie się.

  • WYŁĄCZANIE
    Komunikat o błędzie będzie występować wówczas, gdy zduplikowane wartości kluczy są wstawiane do unikatowego indeksu.Całą operację WSTAWIANIA będzie można wycofać.

Na przykład jeśli pojedynczej instrukcja wstawia 20 wierszy do tabela zawierającej indeks unikatowy, a 10 wiersze te zawierają zduplikowane wartości kluczy, domyślnie wszystkie wiersze 20 są odrzucane.Jednak jeśli opcji indeksowania IGNORE_DUP_KEY jest włączone, tylko 10 wartości klucz zduplikowane zostaną odrzucone; pozostałe 10 niepowtarzalnych klucz wartości zostaną wstawione do tabela.

IGNORE_DUP_KEY nie może być ON indeksy utworzone na widok, Indeksy nieunikatowe, indeksy XML, przestrzennej indeksy i filtrowane indeksów.

Aby wyświetlić IGNORE_DUP_KEY, należy użyć sys.Indexes.

W składni zgodne ze starszymi wersjami, jest równoważne Z IGNORE_DUP_KEY WITH IGNORE_DUP_KEY = ON.

Obsługa wartości NULL

Dla indeksowania celów, jako równe porównać wartości NULL.Nie można więc utworzyć indeks unikatowy lub ograniczenie UNIQUE, jeśli wartości klucz są wartości NULL w więcej niż jeden wiersz.Zaznacz kolumny, które zostały zdefiniowane jako NOT NULL, wybór kolumn w indeksie unikatowym lub ograniczenie unique.

Wymagania dotyczące wolnego miejsca dysku

Proces określania dla indeksy unikatowe wymagania dotyczące wolnego miejsca na dysku jest taka sama, jak indeksów klastrowanych i nieklastrowany.Aby uzyskać informacje dotyczące wymagania dotyczące miejsca na dysku dla indeksów zobacz Determining Index Disk Space Requirements.

Aby utworzyć indeks, podczas tworzenia tabela

Aby utworzyć indeks w istniejącej tabela