Udostępnij za pośrednictwem


Tworzenie indeksów nieklastrowany

Można utworzyć wiele zbudowania indeksów w tabela lub indeksowany widok.Ogólnie aby poprawić wydajność kwerendy często używanych nieobjętych indeks klastrowany tworzone są zbudowania indeksów nie klastrowanych.

Typowej implementacji

Zbudowania indeksów są implementowane w następujący sposób:

  • Ograniczenia klucza podstawowego i unikatowe

    Podczas tworzenia ograniczenia PRIMARY KEY unikatowego indeks klastrowany na kolumna lub kolumna jest tworzona automatycznie, jeśli indeks klastrowany w tabela nie istnieje i nie określisz unikatowy indeks nieklastrowany.klucz podstawowy Kolumny nie zezwalaj na wartości NULL.

    Podczas tworzenia ograniczenia typu UNIQUE, aby wymusić ograniczenia UNIQUE jest tworzony unikatowy indeks nieklastrowany domyślnie.Można określić unikatowego indeks klastrowany indeks klastrowany w tabela nie istnieje.Aby uzyskać więcej informacji, zobacz Ograniczenie na klucz podstawowy i Ograniczenie typu UNIQUE.

  • Niezależne od indeksu ograniczenia

    Domyślnie, tworzony jest indeks nieklastrowany, jeśli klastrowanych nie jest określony.Maksymalna liczba zbudowania indeksów, które mogą być utworzone w tabela jest 999.Zawiera wszystkie indeksy utworzone przez klucz podstawowy lub ograniczenia typu UNIQUE, ale nie ma indeksy XML.

  • Indeks nieklastrowany naindeksowany widok

    Po utworzeniu unikatowego indeks klastrowany w widoku można tworzyć zbudowania indeksów nie klastrowanych.Aby uzyskać więcej informacji, zobacz Tworzenie widoków indeksowanych.

Indeks z uwzględnionych kolumn

Po utworzeniu indeks nieklastrowany dotyczyć kwerenda może zawierać kolumnami w definicji indeksu na pokrycie kolumn w kwerendzie, które nie są używane jako kolumny wyszukiwania podstawowego.Wzrost wydajności zostaną osiągnięte, ponieważ optymalizator kwerendy można znaleźć wszystkie wymagane kolumna danych w indeksie; Tabela lub indeks klastrowany nie jest dostępny.Aby uzyskać więcej informacji, zobacz Indeks z uwzględnionych kolumn.

Indeks z predykat 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ęści wiersze w tabela.Dobrze filtrowane indeksu można poprawić kwerendy wydajności, zmniejszyć koszty eksploatacji indeksu i zmniejszyć indeks kosztów składowania w porównaniu z pełnym tabela indeksów.

Aby uzyskać więcej informacji, zobacz Filtrowane wskazówek indeksu.

Wymagania dotyczące miejsca na dysku

Informacje dla zbudowania indeksów nie klastrowanych, wymagania dotyczące miejsca na dysku, zobacz Określanie wymagań dotyczących miejsca na dysku indeksu.

Zagadnienia wydajności

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

  • Indeks mniej wierszy będą dopasowanie strona co do dysku zwiększa i obniżona wydajność pamięci podręcznej.

  • Wymaga więcej miejsca na dysku do przechowywania indeksu.

  • Konserwacja indeksu może zwiększyć czas, który jest wymagany do wykonania modyfikacje, wstawia, aktualizacje, usuwa lub scala do tabela źródłowa lub indeksowany widok.

Należy określić, czy wzrost wydajności kwerendy przeważyć skutek wydajność podczas modyfikacji danych i wymagania dotyczące miejsca na dysku.Aby uzyskać więcej informacji dotyczących oceny wydajności kwerendy, zobacz Dostrojenie kwerendy.

Należy rozważyć użycie indeksu filtrowane zwiększyć wydajność, gdy dane w tabela kolumn z dobrze zdefiniowany podzbiór wierszy, na przykład sparse kolumn, kolumny z przeważnie wartości NULL, kolumny z kategoriami wartości i kolumn o różnych zakresów wartości.Aby uzyskać więcej informacji, zobacz Filtrowane wskazówek indeksu.

Aby utworzyć klucz podstawowy lub unikatowe ograniczenie podczas tworzenia tabela

CREATE TABLE (Transact-SQL)

Aby utworzyć klucz podstawowy lub unikatowe ograniczenie w istniejącej tabela

ALTER TABLE (Transact-SQL)

Aby utworzyć indeks

CREATE INDEX (Transact-SQL)