Struktury indeks nieklastrowany

Zbudowania indeksów mają taki sam B-drzewo struktury jako indeksów klastrowanych, z wyjątkiem dla następujących istotnych różnic:

  • Wiersze danych tabela źródłowa nie są posortowane i przechowywane w kolejności oparte na ich nieklastrowany kluczy.

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

Zbudowania indeksów można zdefiniować w tabela lub widoku indeks klastrowany lub sterty.Każdy wiersz indeks nieklastrowany indeks zawiera wartość klucz nieklastrowany i lokalizatora wiersza.Lokalizator ten wskazuje 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, jak opisano w następujących:

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

  • Jeśli tabela ma indeks klastrowany lub indeks znajduje się na indeksowany widok, lokalizator wiersza jest klucz indeksu klastrowanego dla wiersza.Jeżeli indeks klastrowany nie ma indeks unikatowy, SQL Server sprawia, że klucze zduplikowane unikatowe dodając wewnętrznie generowane wartość o nazwie element nadający unikatowość.Ta wartość z czwartego bajtu nie jest widoczny dla użytkowników.Tylko dodaje się, gdy wymaga dokonania klastrowany klucz unikatowy do użytku w zbudowania indeksów nie klastrowanych.SQL Server pobiera wiersz danych przez wyszukiwanie przy użyciu klucz indeksu klastrowanego przechowywane w wierszu typu liść indeks nieklastrowany indeks klastrowany.

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ę.Jeśli indeks nieklastrowany ma wiele partycji, każda partycja ma B-drzewo strukturę, która zawiera wiersze indeksu dla określonych na tej partycji.Na przykład, jeśli indeks nieklastrowany ma cztery partycje, istnieją cztery B-drzewo struktur z jednym w każdej partycji.

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

Ważna informacjaWażne:

Sys.system_internals_allocation_units widok systemu jest zarezerwowany Microsoft SQL Server tylko do użytku wewnętrznego.Przyszła zgodność nie jest gwarantowana.

Następująca ilustracja pokazuje strukturę indeks nieklastrowany jednej partycji.

Poziomy indeksu nieklastrowanego

Dołączone kolumny indeksów

Funkcja ponownego zbudowania indeksów można rozszerzyć dodając uwzględnionych kolumn o nazwie kolumnami, do poziom liścia poziomu indeksu.Gdy kolumny kluczy są przechowywane na wszystkich poziomach indeks nieklastrowany, kolumnami są przechowywane tylko w poziom liścia poziom.Aby uzyskać więcej informacji, zobacz Indeks z uwzględnionych kolumn.