Creating Clustered Indexes

Z kilkoma wyjątkami każda tabela powinna mieć indeks klastrowany.Oprócz zwiększania wydajności kwerendy, można ponownie lub zreorganizowana na żądanie, aby kontrolować fragmentacji tabela indeks klastrowany.W widoku wykresu można także tworzyć indeks klastrowany.

Typowe implementacje

Stosowanie indeksów klastrowanych są wykonywane w następujący sposób:

  • Ograniczenia klucz podstawowy i unikatowa

    Podczas tworzenia ograniczenia klucz podstawowy, unikatowego indeks klastrowany na kolumna lub kolumn jest automatycznie tworzone, jeśli indeks klastrowany w tabela nie ma już istnieje i nie zostanie określony unikatowy nie indeks klastrowany.Kolumna klucz podstawowy nie mogą zezwolić na wartości NULL.

    Podczas tworzenia ograniczenia typu UNIQUE do wymuszania ograniczenia typu UNIQUE domyślnie tworzony jest unikatowy indeks nieklastrowany.Użytkownik może określić unikatowego indeks klastrowany indeks klastrowany w tabela nie ma już istnieje.

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

  • Niezależnie od ograniczenie indeksu

    Można utworzyć indeks klastrowany w odniesieniu do kolumny innej niż kolumna klucza podstawowego, jeśli określono nieklastrowany ograniczenia na klucz podstawowy.

  • Widok indeksowany

    Aby utworzyć widok indeksowany, unikatowy indeks klastrowany jest zdefiniowany na jednej lub kilku kolumn widoku.Widok jest materialized i zestaw wyników jest przechowywany na poziomie poziom liścia indeksu w tej samej tabela, sposób dane są przechowywane w indeks klastrowany.Aby uzyskać więcej informacji zobaczTworzenie indeksowanych widoki.

Klucz kolumna zaznaczenie

Ponieważ może istnieć tylko jeden indeks klastrowany na tabela, określające, na które kolumny, aby utworzyć indeks klastrowany jest bardzo ważna.Aby uzyskać więcej informacji na temat zaznaczania w prawej kolumnie zobacz Wskazówki dotyczące projektu indeks klastrowany.

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ę. Aby uzyskać więcej informacji na temat jednostek alokacji zobacz Organizacja indeksu i tabela.

Wymagania dotyczące wolnego miejsca dysku

Podczas tworzenia struktury indeks klastrowany miejsca na dysku dla starego (urządzenie źródłowe) i nowe struktury (miejsce docelowe) jest wymagany w odpowiednich plików i filegroups.Stare struktura nie jest dealokowane aż zatwierdzeniu transakcji pełną.Dodatkowe tymczasowego miejsca na dysku do sortowania może być wymagane.Aby uzyskać więcej informacji zobaczDetermining Index Disk Space Requirements.

Zagadnienia wydajności

Jeżeli indeks klastrowany jest tworzony na stosie z kilku istniejących ponownego zbudowania indeksów nie klastrowanych, nieklastrowany indeksy muszą być ponownie tak, że zawierają one klastrowania wartość klucz zamiast identyfikatora wiersza (RID).Podobnie jeżeli indeks klastrowany zostanie usunięte w tabela, która ma kilka ponownego zbudowania indeksów nie klastrowanych, ponownego zbudowania indeksów nie klastrowanych są wszystkie ponownie w ramach operacji DROP.To może potrwać znaczące na dużych tabel.

Preferowanym sposobem tworzenia indeksów w 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 są utrzymywane.Dzięki temu kwerendy lub aktualizacje do tabela podstawowej, aby kontynuować.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