Udostępnij za pośrednictwem


Wskazówki dotyczące projektu indeks klastrowany

Stosowanie indeksów klastrowanych sortowania i przechowywania wierszy danych w tabela na podstawie ich wartości klucz.Może istnieć tylko jeden indeks klastrowany tabela, ponieważ samych wierszy danych można sortować tylko według jednej.Aby uzyskać więcej informacji na temat indeks klastrowany architektury zobacz Struktury indeks klastrowany

Z kilkoma wyjątkami każda tabela powinna mieć indeks klastrowany zdefiniowane na kolumna lub kolumn, które oferują następujące:

  • Mogą być używane do często używanych kwerend.

  • Zapewnienie wysokiego stopnia unikatowości.

    Uwaga

    Indeks unikatowy oparty na kolumna lub kolumna, jest tworzona automatycznie podczas tworzenia ograniczenia klucz podstawowy.Domyślnie ten indeks jest klastrowany, jednak określić indeks nieklastrowany podczas tworzenia ograniczenia.

  • Można używać w kwerendach zakres.

Jeżeli indeks klastrowany nie została utworzona za pomocą właściwość UNIQUE, Database Engine automatycznie dodaje 4-bajtowego uniqueifier kolumna do tabela. Gdy jest to wymagane, Database Engine automatycznie dodaje uniqueifier wartość do wiersza, aby każdy klucz unikatowe. To kolumna i jego wartości są używane wewnętrznie i nie może być widoczne lub dostępne dla użytkowników.

Uwagi dotyczące kwerendy

Przed utworzeniem indeksów klastrowanych zrozumienie danych będzie dostępna.Należy wziąć pod uwagę przy użyciu indeks klastrowany dla kwerendy, które należy wykonać następujące czynności:

  • Zwraca zakres wartości za pomocą operatorów takich jak BETWEEN, >, >=, <, a <=.

    Po wiersz zawierający pierwszą wartość zostaje znaleziona przy użyciu indeks klastrowany, wiersze, dla których kolejne wartości indeksowanych są gwarantowane jest fizycznie sąsiadujących ze sobą.Na przykład jeśli kwerenda pobiera rekordy między zakresem zamówienia sprzedaży numerów, indeksem klastrowanym dla kolumna SalesOrderNumber można szybko znaleźć wiersz zawierający początkowy numer zamówienia sprzedaży, a następnie pobrać wszystkich kolejnych wierszy w tabela, aż do osiągnięcia ostatni numer zamówienia sprzedaży.

  • Zwrotu duży zestaw wyników.

  • Za pomocą klauzul łączyć; zazwyczaj są to kolumny klucz obcy.

  • Za pomocą ORDER BY lub klauzul GROUP BY.

    Indeks w kolumnach, określonych w klauzula ORDER BY lub GROUP BY usunąć potrzebę Database Engine Aby posortować dane, ponieważ już sortowane są wiersze. Zwiększa to wydajność kwerendy.

Uwagi dotyczące kolumna

Ogólnie rzecz biorąc należy zdefiniować klucz indeks klastrowany w jak najmniejszej liczbie kolumn jak to możliwe.Należy wziąć pod uwagę kolumny, które zawierają co najmniej jedną z następujących atrybutów:

  • Czy unikatowy lub zawiera wiele różnych wartości

    Na przykład identyfikator pracownika jednoznacznie identyfikuje pracowników.Indeks klastrowany lub ograniczenia klucz podstawowy Pole IDPracownika kolumna może poprawić wydajność kwerendy wyszukiwania informacji o pracownikach, na podstawie numeru IDENTYFIKATORA pracownika.Alternatywnie można utworzyć indeks klastrowany na Nazwisko, Imię, MiddleName , ponieważ rekordy pracowników często są grupowane i kwerendy w ten sposób i kombinacji tych kolumn będzie nadal zapewnienie wysokiego stopnia różnicy.

  • Czy są dostępne sekwencyjnie

    Na przykład identyfikator produktu jednoznacznie identyfikuje produktów w Production.Product tabelaAdventureWorks Baza danych. Kwerendy, w którym kolejne wyszukiwania jest określona, takich jak WHERE ProductID BETWEEN 980 and 999, będzie korzystać z indeks klastrowany w IDProduktu.Wynika to z wierszy będzie znajdować się w porządku sortowania w tej kolumnie klucz.

  • Zdefiniowana jako IDENTITY, ponieważ kolumna jest gwarantowane jest unikatowe w tabela.

  • Używany często, aby posortować dane pobierane z tabela.

    Może to być dobrym rozwiązaniem klastra, który jest fizycznie sortowania, w tabela w danej kolumnie zapisać koszt operacji sortowania za każdym razem kolumna dotyczy kwerenda.

Stosowanie indeksów klastrowanych nie są dobrym rozwiązaniem dla następujących atrybutów:

  • Kolumny, które są poddawane częstych zmian

    Powoduje to, że w całych wierszy do przeniesienia, ponieważ Database Engine przechowuje wartości danych wiersza w fizycznej kolejności. To jest ważne w systemach, w którym dane są zazwyczaj nietrwałe przetwarzania transakcji dużej.

  • Szeroki kluczy

    Szeroki klucze są złożone z kilku kolumn lub kilka kolumn duży rozmiar.Wartości klucz z indeks klastrowany są używane przez wszystkich ponownego zbudowania indeksów nie klastrowanych jako klucze wyszukiwania.Żadnych indeksów nieklastrowany zdefiniowana na tej samej tabela będzie znacznie większa, ponieważ wpisy indeks nieklastrowany zawierają klastrowania klucz, a także kolumny kluczy zdefiniowanych dla tego indeks nieklastrowany.

Opcje indeksowania

Istnieje kilka opcji indeksu, które mogą być określone podczas tworzenia indeks klastrowany.Ponieważ stosowanie indeksów klastrowanych są zwykle bardzo duże, należy nadać szczególną uwagę na następujące opcje:

  • SORT_IN_TEMPDB

  • DROP_EXISTING

  • FILLFACTOR

  • TRYB ONLINE

Aby uzyskać więcej informacji zobaczSetting Index Options.