Tworzenie indeksów (aparat bazy danych)
W tym temacie opisano zadania tworzenia indeksu głównych i zawiera wytyczne wykonania i wydajności należy rozważyć przed utworzeniem indeksu.
Zadania tworzenia indeksu
Nasze zalecana strategia tworzenia indeksów składają się następujące zadania:
Projekt indeksu.
Projekt indeksu jest zadanie krytyczne.Projekt indeksu zawiera określenie kolumny, które mają być używane, wybierając typ indeksu (na przykład klastrowany lub nieklastrowany), wybierając opcje właściwe indeksu i określanie grupy plików lub schemat partycji położenie.Aby uzyskać więcej informacji, zobacz Projektowanie indeksów.
Określić najlepszą metoda tworzenia.Indeksy są tworzone w następujący sposób:
Definiując klucz podstawowy lub unikatowe ograniczenie kolumna przy użyciu CREATE TABLE lub ALTER TABLE
Aparat baz danych programu SQL Server Automatycznie tworzy indeks unikatowy w celu wymuszenia unikatowości wymagania klucz podstawowy lub ograniczenie UNIQUE.Domyślnie tworzony jest unikatowy indeks klastrowany Wymuszaj ograniczenie klucza podstawowego, chyba że indeks klastrowany jest już istnieje w tabela lub określić unikatowy indeks nieklastrowany.Domyślnie tworzony jest unikatowy indeks nieklastrowany Wymuszaj ograniczenie typu UNIQUE, chyba że wyraźnie określono unikatowego indeks klastrowany i indeks klastrowany w tabela nie istnieje.
Lokalizacja indeksu indeks i opcje, grupa plików lub schemat partycji, można również określić.
Indeks utworzony jako część ograniczenia na klucz podstawowy lub unikatowe, jest automatycznie nadawana taką samą nazwę jak nazwa ograniczenia.Aby uzyskać więcej informacji, zobacz Ograniczenie na klucz podstawowy i Ograniczenie typu UNIQUE.
Tworząc indeks niezależnych ograniczenia za pomocą instrukcja CREATE INDEX lub Nowy indeks okno dialogowe w SQL Server Management Studio Object Explorer
Należy określić nazwę indeksu, tabelai do których stosuje się indeksu kolumny.Lokalizacja indeksu indeks i opcje, grupa plików lub schemat partycji, można również określić.Domyślnie jeśli nie określono opcji klastrowany lub unikatowe nieklastrowanym, nieunikatowy indeks zostanie utworzony.Aby utworzyć indeks filtrowane, użyj opcjonalnej klauzula WHERE.Aby uzyskać więcej informacji, zobacz Filtrowane wskazówek indeksu.
Utwórz indeks.
Czy na pustą tabela lub jeden zawierający dane zostanie utworzony indeks jest ważnym czynnikiem, który należy wziąć pod uwagę.Tworzenie indeksu na pustej tabela ma nie wpływ na wydajność w czas jest tworzony indeks; Jednakże wpływa na wydajność podczas dodawania danych do tabela.
Tworzenie indeksów w dużych tabelach powinny być planowane dokładnie tak, aby nie był utrudniony wydajność bazy danych.Preferowanym sposobem tworzenia indeksów na dużych tabel jest zacząć indeks klastrowany i budowanie inne niżindeks klastrowanyes.Należy rozważyć ustawienie opcji ONLINE ON podczas tworzenia indeksów dla istniejących tabel.Wartość w długoterminowej blokady tabela nie są przeznaczone Włączanie kwerendy lub aktualizuje tabela źródłowa , aby kontynuować.Aby uzyskać więcej informacji, zobacz Wykonywanie operacji indeks w trybie Online.
Uwagi dotyczące implementacji
W poniższej tabela przedstawiono maksymalnej wartości, które mają zastosowanie do klastrowanego, nieklastrowanym, przestrzennej, przefiltrowane, i indeksów XML.O ile nie określono, ograniczenia dotyczą wszystkich typów indeksu.
Indeks maksymalne limity |
Wartość |
Dodatkowe informacje |
---|---|---|
Stosowanie indeksów klastrowanych tabela |
1 |
|
Zbudowania indeksów w tabela |
999 |
Zawiera utworzone przez klucza podstawowego lub ograniczeń UNIQUE i filtrowane indeksy, ale nie XML indeksy ponownego zbudowania indeksów. |
XML indeksów w tabela |
249 |
Zawiera podstawowe i pomocnicze indeksy XML na xml Typ danych kolumny. |
Przestrzennej indeksów w tabela |
249 |
|
Liczbę kolumn klucz indeksu |
16* |
Indeks klastrowany jest ograniczony do 15 kolumn, jeśli tabela zawiera również indeksu głównego XML lub żadnych indeksów przestrzennych. |
Rozmiar rekordu klucz indeksu |
900 bajtów * |
Nie dotyczą indeksy XML lub indeksy przestrzenne. Dla tabela obsługuje indeksy przestrzenne rozmiar maksymalny indeks klucz rekordu jest 895 bajtów. |
* Można uniknąć indeksu kolumna klucz i rozmiar rekordu ograniczenia zbudowania indeksów nie klastrowanych przez włącznie z kolumnami w indeksie.Aby uzyskać więcej informacji, zobacz Indeks z uwzględnionych kolumn.
Typy danych
Na ogół dowolnej kolumna w tabela lub widoku mogą być indeksowane.W poniższej tabela przedstawiono typy danych, które ograniczono uczestnictwa indeksu.
Typ danych |
Udział indeksu |
Dodatkowe informacje |
---|---|---|
zdefiniowany przez użytkownika typ aparatu CLR |
Mogą być indeksowane, jeśli obsługuje typ binarny zamawiania. |
|
Typy danych dużego obiektu (LOB): image, ntext, text, varchar(max), nvarchar(max), varbinary(max), and xml |
Nie może być indeks klucz kolumna.Jednakże XML Kolumna może być kolumny klucz podstawowego lub pomocniczego indeksu XML na tabela. Może pełnić rolę (dołączone) kolumnami indeks nieklastrowany z wyjątkiem image, ntext, i text. Mogą uczestniczyć Jeśli część kolumna obliczana wyrażenie. |
|
Kolumny obliczane |
Mogą być indeksowane.Obejmuje to obliczanej kolumna zdefiniowane jako wywołania metoda CLR typ zdefiniowany przez użytkownika kolumna, tak długo, jak metoda są oznaczone deterministyczny. kolumna obliczanas pochodnymi typów dane LOB mogą być indeksowane, jako klucz lub nonkey kolumna, tak długo, jak kolumna obliczana typ danych jest dozwolone jako kolumna kluczy indeksu lub nonkey. |
|
Varchar kolumny przesunięta poza wiersz |
Klucz indeks klastrowany indeksu nie może zawierać varchar kolumny zawierające dane istniejące w ROW_OVERFLOW_DATA jednostka alokacji.Jeżeli indeks klastrowany zostanie utworzony na varchar kolumna oraz istniejących danych jest jednostka alokacji, kolejnych insert lub update actions kolumna, która będzie IN_ROW_DATA wypychanie off wiersza danych spowoduje niepowodzenie. |
|
geometry |
Mogą być indeksowane z wielu indeksów przestrzennych. |
Uwagi dodatkowe
Dodatkowe informacje dotyczące tworzenia indeksu są następujące:
Można utworzyć indeks, jeśli mają STEROWAĆ lub zmienić uprawnienia w tabela.
Po utworzeniu indeks jest automatycznie włączone i dostępne do użytku.Aby usunąć dostęp do indeksu, wyłączając go.Aby uzyskać więcej informacji, zobacz Wyłączanie indeksów.
Wymagania dotyczące miejsca na dysku
Ilość miejsca na dysku, wymagane będzie przechowywany indeks zależy od następujących czynników:
Rozmiar każdego wiersza danych w tabela i liczbę wierszy na strona.Określa liczbę stron danych musi być odczytywany z dysku, aby utworzyć indeks.
Kolumny indeksu i używanych typów danych.Określa liczbę stron indeksowych, które mają być zapisywane na dysku.Aby uzyskać więcej informacji, zobacz Szacowanie rozmiaru Indeks klastrowany i Szacowanie rozmiaru indeks nieklastrowany.
Tymczasowego miejsca na dysku wymagane podczas procesu tworzenia indeksu.Aby uzyskać więcej informacji, zobacz Określanie wymagań dotyczących miejsca na dysku indeksu.
Zagadnienia wydajności
Czas fizycznie utworzyć indeks jest dużej mierze zależne podsystemu dyskowego.Niezwykle ważne są następujące:
model odzyskiwanie Bazy danych.Bulk-logged model odzyskiwanie zapewnia większą wydajność i ograniczonej przestrzeni dziennik zużycia podczas operacji tworzenia indeksu niż pełnego odzyskiwanie.Jednak odzyskiwanie bulk-logged zmniejsza elastyczność dla punktu-w-czas odzyskiwania.Aby uzyskać więcej informacji, zobacz Wybieranie modelu odzyskiwania dla operacji indeksu.
RAID Poziom (redundant array of independent disks) używane do przechowywania bazy danych i transakcji dziennika pliki.Ogólnie poziomy RAID, które używają rozkładanie będą miały lepszą przepustowością We/Wy.
Liczba dysków w tablicy dysków, jeśli użyto RAID.Więcej dysków w tablicy danych zwiększa szybkość przesyłania proporcjonalnie.
Gdy uruchamia pośrednie sortowania danych jest przechowywany.Za pomocą opcji SORT_IN_TEMPDB można zmniejszyć czas wymagany do tworzenia indeksu po tempdb na inny zestaw dysków niż baza danych użytkownika.Aby uzyskać więcej informacji, zobacz tempdb i tworzenie indeksu.
Tworzenie indeksu w trybie offline lub online.
Po utworzeniu indeks offline (ustawienie domyślne), wyłącznej blokady są aktywne tabela źródłowa aż do tworzenia indeksu transakcji zostało ukończone.Tabela jest niedostępna dla użytkowników podczas tworzenia indeksu.
XML i przestrzennej indeksów można określić indeks można utworzyć online.Opcja online jest ustawiona na ON, długoterminowej blokady tabela nie są aktywne, włączając kwerendy lub aktualizuje tabela źródłowa kontynuować podczas tworzenia indeksu.Chociaż zaleca operacji online indeksu należy ocenić środowiska i szczególne wymagania.Może być lepiej uruchomić operacje indeks w trybie offline.W ten sposób użytkownicy ograniczono dostęp danych podczas operacji, ale operacja zakończy się szybciej i wykorzystuje mniej zasobów.Aby uzyskać więcej informacji, zobacz Wykonywanie operacji indeks w trybie Online.
Aby utworzyć klucz podstawowy lub unikatowe ograniczenie podczas tworzenia tabela
Aby utworzyć klucz podstawowy lub unikatowe ograniczenie w istniejącej tabela
Aby utworzyć indeks
Zobacz także