Udostępnij za pośrednictwem


Creating Nonclustered Indexes

Można utworzyć wiele ponownego zbudowania indeksów nie klastrowanych na tabela lub widok indeksowany.Ogólnie rzecz biorąc ponownego zbudowania indeksów nie klastrowanych są tworzone w celu zwiększenia wydajności często używanych kwerendy nie są objęte indeksem klastrowanym.

Typowe implementacje

Ponownego zbudowania indeksów nie klastrowanych są wykonywane w następujący sposób:

  • Ograniczenia klucz podstawowy i unikatowa

    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

    Domyślnie, tworzony jest indeks nieklastrowany, jeśli klastrowanych nie został określony.Maksymalna liczba nieklastrowany indeksy, które mogą być tworzone na tabela jest 999.Zawiera wszystkie indeksy utworzone przez klucz podstawowy lub ograniczenia UNIQUE, ale nie obejmuje przestrzennej indeksy lub XML.

  • Indeks nieklastrowany w widok indeksowany

    Po utworzeniu unikatowego indeks klastrowany w celu ponownego zbudowania indeksów nie klastrowanych mogą być tworzone.Aby uzyskać więcej informacji zobaczTworzenie indeksowanych widoki.

Indeks z dołączanych kolumn

Gdy tworzony jest indeks nieklastrowany obejmujące kwerendy, można dołączyć kolumny nonkey w definicji indeksu na pokrycie kolumn w kwerendzie, które nie są używane jako kolumny wyszukiwania podstawowego.Są osiągane zyski wydajności, ponieważ optymalizator kwerendy może zlokalizować wszystkich danych wymaganych kolumn w indeksie, tabela lub indeks klastrowany nie jest dostępny.Aby uzyskać więcej informacji zobaczIndex with Included Columns.

Indeks z predykatu filtru

Filtrowane indeks jest zoptymalizowana indeks nieklastrowany, szczególnie dostosowane do kwerendy tytułowych, które z dobrze podzbiór danych, wybierz.Predykat filtru wykorzystuje do indeksowania część wierszy w tabela.Dobrze indeksu filtrowane może poprawić kwerendy wydajności, zmniejszyć koszty obsługi indeksu i obniżenie kosztów magazynowania indeksu w porównaniu z pełnym tabela indeksów.

Aby uzyskać więcej informacji zobaczWskazówki dotyczące projektowania indeks filtrowane.

Wymagania dotyczące wolnego miejsca dysku

Aby uzyskać informacje dotyczące wymagania dotyczące miejsca na dysku dla ponownego zbudowania indeksów nie klastrowanych zobacz Determining Index Disk Space Requirements.

Zagadnienia wydajności

Pomimo, że jest to ważne, że indeks zawierają wszystkie kolumny używane przez kwerendę, należy unikać dodawania niepotrzebnie kolumn.Dodawanie zbyt wiele kolumn indeksu, klucz lub nonkey, mogą mieć następujące konsekwencje wydajności:

  • Mniej wierszy w indeksie zmieści się strona, co dysk we/wy powoduje zwiększenie i zmniejszenie wydajności pamięci podręcznej.

  • Więcej miejsca na dysku wymagane będzie przechowywany indeks.

  • Konserwacja indeks może zwiększyć czas, który jest wymagany do wykonania zmian, wstawia, aktualizuje, usuwa, lub łączy do tabela lub widok indeksowany.

Należy sprawdzić, czy wzrost wydajności kwerendy przewyższają wpływ na wydajność podczas modyfikacji danych i wymagania dotyczące miejsca na dysku dodatkowe.Aby uzyskać więcej informacji na temat oceny wydajności kwerendy Zobacz Query Tuning.

Należy rozważyć użycie indeksu filtrowane zwiększyć wydajność, gdy dane w tabela zawiera kolumny z dobrze zdefiniowany podzbiór wierszy, na przykład rozrzedzone kolumn, kolumny z przeważnie wartości NULL, kolumny z kategoriami wartości i kolumny do różnych zakresów wartości.Aby uzyskać więcej informacji zobaczWskazówki dotyczące projektowania indeks filtrowane.

Aby utworzyć ograniczenia klucz podstawowy lub UNIQUE, podczas tworzenia tabela

CREATE TABLE (Transact-SQL)

Aby utworzyć ograniczenia klucz podstawowy lub UNIQUE w istniejącej tabela

ALTER tabela (języka Transact-SQL)

Aby utworzyć indeks

CREATE INDEX (języka Transact-SQL)