Struktury indeks nieklastrowany

Ponownego zbudowania indeksów nie klastrowanych mają taką samą strukturę B-drzewo jako indeksów klastrowanych, z wyjątkiem następujących istotnych różnic:

  • Wiersze danych z tabela podstawowej nie są sortowane i przechowywane w kolejności, w zależności od ich nieklastrowany kluczy.

  • Warstwa liść indeks nieklastrowany składa się z indeksu strony zamiast strony danych.

Ponownego zbudowania indeksów nie klastrowanych, można zdefiniować w tabela ani widoku zawierającego indeks klastrowany lub sterty.Każdy wiersz indeks nieklastrowany indeks zawiera nieklastrowany wartość klucz i Lokalizator wiersza.Lokalizator ten wskazuje na wiersz danych w indeks klastrowany lub sterty o wartości klucz.

Locators wiersza w wierszach indeks nieklastrowany są wskaźnik do wiersza lub klucz indeks klastrowany dla wiersza, opisane w następujących czynności:

  • Jeśli tabela jest sterty, co oznacza, nie ma indeks klastrowany, lokalizator wiersza jest wskaźnik do wiersza.Kursor jest tworzony z pliku identyfikator (ID), numer strona i numer wiersza strona.Całe wskaźnik myszy jest określane jako identyfikator wiersza (RID).

  • Jeśli tabela ma indeks klastrowany lub indeks znajduje się na widok indeksowany, lokalizator wiersza jest kluczem indeksu klastrowanego dla wiersza.Jeżeli indeks klastrowany nie ma indeks unikatowy SQL Server powoduje, że klucze zduplikowane unikatowe przez dodanie wewnętrznie generowane wartość o nazwie element nadający unikatowość.Tę wartość z czwartego bajtu jest niewidoczna dla użytkowników.Gdy jest to wymagane, aby klucz klastrowany w ponownego zbudowania indeksów nie klastrowanych unikatowe do użytku tylko zostanie dodany.Program SQL Server pobiera wiersz danych, przeszukując indeks klastrowany przy użyciu klucz indeksu klastrowanego przechowywane w wierszu typu liść indeks nieklastrowany.

Nonclustered indexes have one row in sys.partitions with index_id >0 for each partition used by the index.Domyślnie indeks nieklastrowany ma jedną partycję.Indeks nieklastrowany znajduje się wiele partycji, każda partycja ma strukturę B-drzewo, zawierający wiersze indeksu dla tego określonej partycji.Na przykład jeśli indeks nieklastrowany ma cztery partycje, istnieją cztery struktury B-drzewo, z jednym w każdej partycji.

W zależności od typów danych w indeks nieklastrowany struktury każdy indeks nieklastrowany ma jeden lub więcej jednostek alokacji, w którym mają być przechowywane i zarządzane dane dla określonej partycji.Co najmniej każdy indeks nieklastrowany będzie miał IN_ROW_DATA jednostka alokacji dla każdej partycji, przechowującym strony B-drzewo indeksu.Indeks nieklastrowany będzie miał LOB_DATA jednostka alokacji dla każdej partycji, jeśli zawiera ona kolumn dużego obiektu (LOB).Dodatkowo będzie miał ROW_OVERFLOW_DATA jednostka alokacji dla każdej partycji, jeśli zawiera ona kolumn o zmiennej długości, które przekraczają limit rozmiaru wierszy 8,060 bajt.Aby uzyskać więcej informacji na temat jednostek alokacji zobacz Organizacja indeksu i tabela. Kolekcje strona B-drzewo są zakotwiczone przez root_page wskaźniki w sys.system_internals_allocation_units widok systemu.

Important noteImportant Note:

The sys.system_internals_allocation_units system view is reserved for Microsoft SQL Server internal use only.Przyszła zgodność nie jest gwarantowana.

Na następującej ilustracji pokazano strukturę indeks nieklastrowany w jednej partycji.

Levels of a nonclustered index

Dołączone kolumna indeksów

Dodając kolumny uwzględniane, o nazwie nonkey kolumn na poziomie typu poziom liścia indeksu, można rozszerzyć funkcjonalność ponownego zbudowania indeksów nie klastrowanych.Gdy kolumny kluczy są przechowywane na wszystkich poziomach indeks nieklastrowany, nonkey kolumn są przechowywane tylko na poziomie poziom liścia.Aby uzyskać więcej informacji zobaczIndex with Included Columns.