Maksymalny rozmiar indeksu kluczy
When you design an index that contains many key columns, or large-size columns, calculate the size of the index key to make sure that you do not exceed the maximum index key size.SQL Server retains the 900-byte limit for the maximum total size of all index key columns.Wyklucza kolumnami, zawarte w definicji zbudowania indeksów nie klastrowanych.
Obliczanie rozmiaru klucza indeksu
Aby obliczyć łączny rozmiar klucz indeksu, wykonaj następujące kroki.
Wyświetlanie właściwości kolumny tabela, na których będzie oparta indeksu.Można to zrobić za pomocą sys.columns wykazu widoku.
Suma długości każdej kolumna, która zostanie zdefiniowana w indeksie klucz.
Na przykład, następujący instrukcja agregatów max_length kolumna sys.columns Widok dla określonych kolumn w katalogu Person.Address tabela.
USE AdventureWorks2008R2; GO SELECT SUM(max_length)AS TotalIndexKeySize FROM sys.columns WHERE name IN (N'AddressLine1', N'AddressLine2', N'City', N'StateProvinceID', N'PostalCode') AND object_id = OBJECT_ID(N'Person.Address');
Ostrzeżenie
Jeśli kolumna tabela jest typ danych Unicode takich jak nchar lub nvarchar, długość kolumny wyświetlane jest długość przechowywania kolumny.Jest dwa razy liczba znaków określonych w instrukcja CREATE TABLE.W poprzednim przykładzie City jest zdefiniowany jako nvarchar(30) typu danych; Dlatego magazyn długości kolumna jest 60.
Jeżeli całkowita długość jest mniejsza niż 900 bajtów, kolumny mogą uczestniczyć jako indeks klucz kolumny.Jeżeli całkowita długość przekracza 900 bajtów, przejrzyj następujące informacje dotyczące opcji i dodatkowe zagadnienia.
instrukcja CREATE INDEX używa następujących algorytmów do obliczania indeksu rozmiar klucz:
Jeśli rozmiar wszystkich stałej kolumny klucz plus maksymalny rozmiar wszystkich zmiennych kolumny klucz określonego w instrukcja CREATE INDEX jest mniejsza niż 900 bajtów, instrukcja CREATE INDEX zakończy się pomyślnie bez ostrzeżeń lub błędów.
Jeśli rozmiar wszystkich stałej kolumny klucza plus 900 przekracza maksymalny rozmiar wszystkich zmiennych kolumny klucza, ale rozmiar kolumn klucza wszystkich stałych plus minimalny rozmiar kolumny klucza zmiennej jest mniejsza niż 900, ostrzeżeń, kolejnych instrukcja INSERT lub UPDATE może zakończyć się niepowodzeniem, jeśli określa się powiedzie instrukcja CREATE INDEX wartości, które generuje klucz wartość większą niż 900 bajtów.Instrukcja CREATE INDEX nie powiedzie się, gdy istniejące wiersze danych w tabela wartości wygenerować klucz większy niż 900 bajtów.Kolejnych instrukcja INSERT lub UPDATE określająca wartości danych generuje wartość klucz dłużej niż 900 bajtów nie powiedzie się.
Jeśli ustalony rozmiar wszystkich kolumn klucz plus minimalny rozmiar wszystkich zmiennych kolumn określona w instrukcja CREATE INDEX przekracza 900 bajtów, instrukcja CREATE INDEX nie powiedzie się.
Poniższa tabela zawiera podsumowanie wyniki tworzenie indeksów, które spełniają lub przekraczają ograniczenia indeksu maksymalny rozmiar klucz.
Minimalny rozmiar kolumn o zmiennej długości + rozmiar kolumna danych jednostkowych |
Maksymalny rozmiar kolumn o zmiennej długości + rozmiar kolumna danych jednostkowych |
MAKSYMALNA suma długości kolumna klucz indeksu dla istniejących wierszy * |
Tworzony jest indeks |
Typ wiadomości |
Uruchom INSERT lub UPDATE -czas błąd spowodowany przez zbyt duży indeks wartość klucz |
---|---|---|---|---|---|
> 900 bajty |
Nie jest istotne |
Nie jest istotne |
Nie |
Błąd |
Nie obecności wygenerować błąd indeksu. |
<= 900 bajtów |
<= 900 bajtów |
Nie jest istotne |
Tak |
Brak |
Nr. |
<= 900 bajtów |
> 900 bajty |
<= 900 bajtów |
Tak |
Ostrzeżenie |
Tylko wtedy, gdy suma bieżąca długości wszystkich kolumn indeksu przekraczającym 900 bajtów. |
<= 900 bajtów |
> 900 bajty |
> 900 bajty |
Nie |
Błąd |
Nie obecności wygenerować błąd indeksu. |
* Brak wierszy w tabela na czas wykonaniu instrukcja CREATE INDEX może mieć wartości kluczy indeksu, której całkowita długość przekracza 900 bajtów.
Aby uniknąć ograniczenia rozmiaru przy użyciu uwzględnionych kolumn
Można dołączyć kolumnami w indeks nieklastrowany w celu uniknięcia ograniczeń bieżącego rozmiaru indeksu maksymalnie 16 kolumn klucz i indeks maksymalny rozmiar klucz 900 bajtów. Aparat baz danych programu SQL Server Nie uzna kolumnami podczas obliczania numer indeksu kolumny klucz lub całkowity rozmiar kolumny kluczy indeksu.Indeks nieklastrowany z uwzględnionych kolumn, całkowity rozmiar indeksu klucz kolumny jest ograniczony do 900 bajtów.Całkowity rozmiar wszystkich kolumnami jest ograniczona tylko przez rozmiar kolumn określonych w klauzula Dołącz; na przykład varchar(max) kolumny są ograniczone do 2 GB.Kolumn w klauzula Dołącz mogą być wszystkie typy danych z wyjątkiem text, ntext, i image.