Tworzenie indeksów (aparat bazy danych)

W tym temacie opisano indeks główny Tworzenie zadania i zapewnia wskazówek wdrażania i działania, które należy wziąć pod uwagę przed utworzeniem indeksu.

Zadania tworzenia indeksu

Nasze zalecana strategia tworzenia indeksów składają się następujące zadania:

  1. Projektowanie indeksu.

    Projekt indeksu jest zadanie krytyczne.Indeks projekt zawiera określenie kolumny, które mają być używane, wybierając typ indeksu (na przykład klastrowany lub nieklastrowany), zaznaczając opcje właściwe indeksu i określające grupa plików lub schemat partycji położenie.Aby uzyskać więcej informacji zobaczProjektowanie indeksów.

  2. Określić najlepszą metoda tworzenia.Indeksy są tworzone w następujący sposób:

    • Definiując ograniczenia klucz podstawowy lub UNIQUE dla kolumna przy użyciu CREATE tabela lub ALTER tabela

      The SQL Server Database Engine automatically creates a indeks unikatowy to enforce the uniqueness requirements of a klucz podstawowy or UNIQUE constraint. Domyślnie unikatowy indeks klastrowany jest tworzony do wymuszania ograniczenia klucz podstawowy, chyba że indeks klastrowany jest już tabela lub określić unikatowy indeks nieklastrowany.Domyślnie tworzona jest unikatowy indeks nieklastrowany wymusza ograniczenie typu UNIQUE, chyba że unikatowy indeks klastrowany jest jawnie określony i indeksem klastrowanym dla tabela nie istnieje.

      Indeks opcje i indeks lokalizacji, grupa plików lub schemat partycji, może być także określona.

      Indeks utworzony jako część ograniczenia klucz podstawowy lub UNIQUE jest automatycznie nadawana taką samą nazwę jak nazwa ograniczenia.Aby uzyskać więcej informacji zobacz PRIMARY KEY Constraints i UNIQUE Constraints.

    • Przez utworzenie indeksu niezależnie od ograniczenia za pomocą instrukcja CREATE INDEX lub Nowy indeks pole dialogowe SQL Server Management Studio Eksplorator obiektów

      Musisz określić nazwę indeksu, tabele i kolumny, do których stosuje się indeks.Opcje i schemat lokalizacji, grupa plików lub partycji indeksu, może być także określona.Domyślnie nieklastrowany, nieunikatowy indeks jest tworzony, jeśli nie zostaną określone opcje klastrowany lub unikatowe.Aby utworzyć indeks filtrowane, użyj opcjonalnej klauzula WHERE.Aby uzyskać więcej informacji zobaczWskazówki dotyczące projektowania indeks filtrowane.

  3. Utwórz indeks.

    Czy na pustej tabela lub taki, który zawiera dane, zostanie utworzony indeks jest ważnym czynnikiem, który należy wziąć pod uwagę.Tworzenie indeksu na pustej tabela nie wpływ na wydajność w czasie, tworzony jest indeks; jednak wydajność będzie to miało wpływu podczas dodawania danych do tabela.

    Tworzenie indeksów w dużych tabelach powinny być planowane dokładnie tak, aby wydajności bazy danych nie jest utrudniony.Preferowanym sposobem tworzenia indeksów na dużych tabel jest uruchomienie z indeksem klastrowanym, a następnie utworzyć wszelkie ponownego zbudowania indeksów nie klastrowanych.Należy rozważyć ustawienie opcji ONLINE ON podczas tworzenia indeksów w istniejących tabelach.Jeśli ustawiona na ON, długoterminowej blokady tabela nie przechowywane są Włączanie wykonuje kwerendę i jest aktualizowany w celu tabela źródłowa aby kontynuować.Aby uzyskać więcej informacji zobaczWykonywanie operacji indeks w trybie online.

Uwagi dotyczące implementacji

Poniższa tabela zawiera listę maksymalnej wartości, które stosuje się do klastra, nieklastrowany, przestrzennej, filtrowane, i indeksów XML.Jeżeli nie określono, ograniczenia dotyczą wszystkich typów indeksu.

Limity maksymalnej indeksu

Wartość

Dodatkowe informacje

Stosowanie indeksów klastrowanych na tabela

1

 

Ponownego zbudowania indeksów nie klastrowanych na tabela

999

Zawiera ponownego zbudowania indeksów nie klastrowanych, utworzony przez klucz podstawowy lub ograniczenia UNIQUE i filtrowane indeksy, ale nie XML indeksów.

Indeksy XML na tabela

249

Zawiera podstawowe i pomocnicze indeksów XML na xml Typ danych kolumny.

Indeksy w kolumnach typu danych XML

Indeksy przestrzenne na tabela

249

Working with Spatial Indexes (Database Engine)

Liczba kolumn klucz w indeksie

16*

Indeks klastrowany jest ograniczona do 15 kolumny, jeśli tabela zawiera również indeksu głównego XML lub żadnych indeksów przestrzennej.

Maximum Size of Index Keys.

Rozmiar rekordu klucz indeksu

900 bajtów *

Nie ma zastosowania do indeksów XML lub przestrzennej indeksy.

W przypadku tabela do obsługi indeksów przestrzennej rozmiar maksymalny indeks klucz rekordu jest 895 bajtów.

Maximum Size of Index Keys.

* Można uniknąć indeks kolumna klucz i ograniczenia rozmiaru rekordów ponownego zbudowania indeksów nie klastrowanych przez dołączenie nonkey kolumn w indeksie.Aby uzyskać więcej informacji zobaczIndex with Included Columns.

Typy danych

Ogólnie rzecz biorąc mogą być indeksowane dowolnej kolumna w tabela lub widoku.Poniższa tabela zawiera listę typów danych, które mają ograniczone udział indeksu.

Typ danych

Indeks udziału

Dodatkowe informacje

zdefiniowany przez użytkownika typ danych CLR

Jeżeli typ obsługuje kolejności binarne, mogą być indeksowane.

Working with CLR User-defined Types

Typy danych dużych obiektów (LOB): image, ntext, text, varchar(max), nvarchar(max), varbinary(max), a xml

Nie może być kolumną klucz indeksu.Jednak XML kolumna może być kolumnę klucz w indeksie XML podstawowym lub pomocniczym dla tabela.

Może pełnić rolę nieklastrowany indeks, z wyjątkiem nonkey kolumn (włączone) image, ntext, a text.

Może także uczestniczyć w przypadku część wyrażenie kolumna obliczana.

Index with Included Columns

Indeksy w kolumnach typu danych XML

Kolumny obliczane

Mogą być indeksowane.Obejmuje to kolumna obliczane zdefiniowane jako wywołania metoda CLR kolumna typ zdefiniowany przez użytkownika, tak długo, jak metoda są oznaczone deterministyczny.

Kolumny obliczane pochodnymi typów dane LOB mogą być indeksowane jako klucz lub nonkey kolumny, tak długo, jak typ danych kolumna obliczana jest dozwolona jako kolumny klucza indeksu lub nonkey kolumny.

Tworzenie indeksów na kolumny obliczane

Varchar kolumny przesunięta poza wiersza

Nie może zawierać klucz indeks klastrowany indeksu varchar kolumny zawierające dane istniejące w jednostce alokacji ROW_OVERFLOW_DATA. Jeżeli indeks klastrowany jest tworzony w varchar istniejące dane i kolumn znajduje się w jednostce alokacji IN_ROW_DATA, wstawianie kolejnych lub aktualizacja akcji kolumna, która będzie wypychanie poza wiersza danych nie powiedzie się.

Organizacja indeksu i tabela

Row-Overflow Data Exceeding 8 KB

geometry

Mogą być indeksowane z wielu przestrzennej indeksów.

Typy danych przestrzenny

Dodatkowe zagadnienia

Poniżej przedstawiono niektóre dodatkowe informacje dotyczące tworzenia indeksu:

  • Można utworzyć indeksu, jeśli mają sterowania lub ALTER uprawnienia zdefiniowane w tabela.

  • Po utworzeniu indeks jest automatycznie włączone i dostępne do użytku.Dostęp do indeksu można usunąć przez wyłączenie go.Aby uzyskać więcej informacji zobaczDisabling Indexes.

Wymagania dotyczące wolnego miejsca dysku

Ilość miejsca na dysku wymaganą do przechowywania indeks zależy od następujących czynników:

Zagadnienia wydajności

Czas potrzebny do fizycznie Tworzenie indeksu w dużej mierze uzależniony jest od podsystemu dyskowego.Ważne czynniki, jakie należy wziąć pod uwagę są następujące:

  • model odzyskiwanie Bazy danych.Modelu odzyskiwanie rejestrowane zbiorczej zapewnia większą wydajność i obniżone obszar rejestrowania zużycia podczas operacji tworzenia indeksu niż pełnego odzyskiwanie.Jednak odzyskiwanie rejestrowane zbiorczej zmniejsza elastyczność punktu w czasie odzyskiwanie.Aby uzyskać więcej informacji zobaczChoosing a Recovery Model for Index Operations.

  • The RAID (redundant array of independent disks) poziom used to store the database and dziennik transakcji files. Ogólnie rzecz biorąc poziomy RAID, które używają rozkładanie będzie miał większą przepustowość We/Wy.

  • Liczba dysków w tablicy dysków, jeśli użyto macierzy RAID.Więcej dysków w tablicy danych zwiększa transferu stawki proporcjonalnie.

  • W przypadku gdy działa pośrednich sortowania danych jest przechowywany.Za pomocą opcji SORT_IN_TEMPDB umożliwia skrócenie czas wymaganego do tworzenia indeksu po tempdb znajduje się na inny zestaw dysków niż baza danych użytkownika.Aby uzyskać więcej informacji zobacztempdb and Index Creation.

  • Tworzenie indeksu w trybie offline lub online.

    Gdy indeks jest tworzony trybu offline (ustawienie domyślne), wyłącznej blokady są przechowywane na tabela źródłowa aż do tworzenia indeksu transakcji zostało ukończone.W tabela nie jest dostępna dla użytkowników podczas tworzenia indeksu.

    XML i przestrzennej indeksów można określić indeksu można utworzyć online.Opcja online jest ustawiona na ON, długoterminowej blokady tabela nie są przechowywane, włączanie wykonuje kwerendę i aktualizuje do tabela podstawowej, aby kontynuować, podczas tworzenia indeksu.Mimo że firma Microsoft zaleca operacji indeksu online, należy ocenić na środowisko i określone wymagania.Być może lepiej uruchomić operacji indeksu w trybie offline.W ten sposób użytkownicy mają ograniczony dostęp danych podczas operacji, ale operacja zakończy się szybciej i wykorzystująca mniejszą ilość zasobów.Aby uzyskać więcej informacji zobaczWykonywanie operacji indeks w trybie online.

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

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

Aby utworzyć indeks

Historia zmian

Microsoft Learning

Limit indeks nieklastrowany zaktualizowane do 999.