Udostępnij za pośrednictwem


Tworzenie indeksów klastrowanych

Z niektórymi wyjątkami każda tabela powinna mieć indeks klastrowany.Oprócz poprawia wydajność kwerendy, można przebudowany lub zmieniono ich organizację, na żądanie sterowania fragmentacji tabela indeks klastrowany.Można również utworzyć indeks klastrowany w na widoku.

Typowej implementacji

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

  • Ograniczenia klucza podstawowego i unikatowe

    Podczas tworzenia ograniczenia PRIMARY KEY unikatowego indeks klastrowany na kolumna lub kolumna jest tworzona automatycznie, jeśli indeks klastrowany w tabela nie istnieje i nie określisz unikatowy indeks nieklastrowany.klucz podstawowy Kolumny nie zezwalaj na wartości NULL.

    Podczas tworzenia ograniczenia typu UNIQUE, aby wymusić ograniczenia UNIQUE jest tworzony unikatowy indeks nieklastrowany domyślnie.Można określić unikatowego indeks klastrowany indeks klastrowany w tabela nie istnieje.

    Indeks utworzony jako część ograniczenia, jest automatycznie nadawana taką samą nazwę jak nazwa ograniczenia.Aby uzyskać więcej informacji, zobacz Ograniczenie na klucz podstawowy i Ograniczenie typu UNIQUE.

  • Niezależne od indeksu ograniczenia

    Jeśli określono nieklastrowany ograniczenia na klucz podstawowy, można utworzyć indeks klastrowany na kolumny innej niż kolumna klucza podstawowego.

  • Widok indeksowany

    Aby utworzyć indeksowany widok, unikatowy indeks klastrowany jest zdefiniowany na jedną lub więcej kolumn widoku.Materialized widok i zestaw wyników jest przechowywany w poziom liścia poziom indeksu w ten sam sposób danych tabela są przechowywane w indeksie klastrowanym.Aby uzyskać więcej informacji, zobacz Tworzenie widoków indeksowanych.

Zaznaczenie kolumny klucza

Ponieważ może istnieć tylko jeden indeks klastrowany tabela, określania, na które kolumny, aby utworzyć indeks klastrowany jest bardzo ważne.Aby uzyskać więcej informacji o wybieraniu prawa kolumna, zobacz Wytyczne projektowania indeks klastrowany.

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

Wymagania dotyczące miejsca na dysku

Podczas tworzenia struktury indeks klastrowany miejsca na dysku (źródło) starych i nowych struktur (miejsce docelowe) jest wymagana w ich odpowiednich plików i aplikacjami.Nie dealokowaniu starej struktury, dopóki zatwierdzeniu transakcji kompletne.Można także wymagać dodatkowego tymczasowego miejsca na dysku do sortowania.Aby uzyskać więcej informacji, zobacz Określanie wymagań dotyczących miejsca na dysku indeksu.

Zagadnienia wydajności

Jeżeli indeks klastrowany jest tworzony na stercie z kilku istniejących zbudowania indeksów nie klastrowanych, zbudowania indeksów musi przebudowany tak, że zawierają one klastrowanie klucz wartość zamiast identyfikatora wiersza (RID).Podobnie jeżeli indeks klastrowany jest przenoszony na tabela zawierającej kilka zbudowania indeksów nie klastrowanych, zbudowania indeksów są wszystkie przebudowany w ramach operacji UPUSZCZANIA.Może to zająć znaczącą czas na dużych tabel.

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.Gdy zestaw on, długoterminowej blokady tabela nie są utrzymywane.To umożliwia zapytania lub aktualizuje tabela źródłowa , aby kontynuować.Aby uzyskać więcej informacji, zobacz Wykonywanie operacji indeks w trybie Online.

Aby utworzyć klucz podstawowy lub unikatowe ograniczenie podczas tworzenia tabela

CREATE TABLE (Transact-SQL)

Aby utworzyć klucz podstawowy lub unikatowe ograniczenie w istniejącej tabela

ALTER TABLE (Transact-SQL)

Aby utworzyć indeks

CREATE INDEX (Transact-SQL)