Eksportuj (0) Drukuj
Rozwiń wszystko
Expand Minimize
Ten artykuł był przetłumaczony komputerowo. Oryginalny tekst zobaczysz, umieszczając wskaźnik myszy nad zdaniami w artykule. Więcej informacji.
Tłumaczenie
Oryginał
Ten temat nie został jeszcze oceniony - Oceń ten temat

Zmiana INDEKSU (języka Transact-SQL)

Modyfikuje istniejącą tabelę lub widok indeksu (relacyjnej lub XML) wyłączenie, przebudowy lub reorganizacji indeksu; lub ustawiając opcje w indeksie.

Ikona łącza do tematu Konwencje składni języka Transact-SQL


ALTER INDEX { index_name | ALL }
    ON <object>
    { REBUILD 
        [ [PARTITION = ALL]
          [ WITH ( <rebuild_index_option> [ ,...n ] ) ] 
          | [ PARTITION = partition_number 
                [ WITH ( <single_partition_rebuild_index_option>
                        [ ,...n ] )
                ] 
            ]
        ]
    | DISABLE
    | REORGANIZE 
        [ PARTITION = partition_number ]
        [ WITH ( LOB_COMPACTION = { ON | OFF } ) ]
  | SET ( <set_index_option> [ ,...n ] ) 
    }
[ ; ]

<object> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
    table_or_view_name
}

<rebuild_index_option > ::=
{
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor 
  | SORT_IN_TEMPDB = { ON | OFF }
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | ONLINE = { ON | OFF } 
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE } 
     [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
     [ , ...n ] ) ]
}
<range> ::= 
<partition_number_expression> TO <partition_number_expression>
}

<single_partition_rebuild_index_option> ::=
{
    SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE } }
}

<set_index_option>::=
{
    ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
}
index_name

Nazwa indeksu jest. Nazwy indeksu musi być unikatowa w obrębie tabeli lub widoku, ale nie muszą być unikatowe w obrębie bazy danych. Nazwy indeksu należy przestrzegać zasad identyfikatorów.

ALL

Określa wszystkie indeksy skojarzone z tabeli lub widoku niezależnie od typu indeksu. Określając wszystkie powoduje, że oświadczenie awarię jednego lub kilku indeksów są w grupie plików trybu offline lub tylko do odczytu lub określona operacja jest niedozwolona na jeden lub więcej typów indeksu. Poniższa tabela wymienia działania, indeksu i niedopuszczalne rodzaje indeksu.

Określając wszystkie z tej operacji

Jeśli tabela zawiera jeden lub więcej

ODBUDUJ W TRYBIE ONLINE = ON

XML indeksu

Indeks przestrzenny

Large object data type columns: image, text, ntext, varchar(max), nvarchar(max), varbinary(max), and xml

ODBUDUJ PARTYCJA =partition_number

Indeks nonpartitioned, XML indeksu, indeks przestrzenny lub niepełnosprawnych indeksu

REORGANIZOWANIE

Indeksy z ALLOW_PAGE_LOCKS ustaw OFF

REORGANIZACJA PARTITION =partition_number

Indeks nonpartitioned, XML indeksu, indeks przestrzenny lub niepełnosprawnych indeksu

IGNORE_DUP_KEY = ON

Indeks przestrzenny

XML indeksu

ONLINE = ON

Indeks przestrzenny

XML indeksu

Jeżeli określono wartość ALL z PARTYCJĄ = partition_number, wszystkie indeksy muszą być dostosowane. Oznacza to, że są odseparowane na podstawie funkcji równoważne partycji. Korzystanie z PARTYCJI powoduje, że wszystkie partycje indeksu o takiej samej partition_numberprzebudowany lub zreorganizowana. Aby uzyskać więcej informacji na temat indeksów podzielonym na partycje, zobacz Podzielonym na partycje tabel i indeksy.

database_name

Jest nazwą bazy danych.

schema_name

To nazwa schematu, do której należy dany tabeli lub widoku.

table_or_view_name

Jest nazwą tabeli lub widok skojarzony z indeksu. Aby wyświetlić raport indeksów na obiekt, użyj sys.indexes katalog widoku.

ODBUDUJ [Z (<rebuild_index_option> [ ,... n]) ]

Określa, że indeks zostanie przebudowany, przy użyciu tych samych kolumn, typ indeksu, unikatowości atrybutu i porządek sortowania. Ta klauzula jest odpowiednikiem DBCC DBREINDEX. ODBUDUJ włącza wyłączoną indeksu. Przebudowywanie indeksu klastrowanego nie odbudować skojarzone indeksów nie klastrowanych chyba że słowo kluczowe jest określona wartość ALL. Jeśli nie podano opcji indeks istniejący indeks opcji wartości przechowywanych w sys.indexes są stosowane. Dla dowolnej opcji indeksu, których wartość nie jest przechowywana w sys.indexes, stosuje się domyślnie wskazanej w definicji argumentem opcji.

Kiedy odbudować indeks XML lub indeks przestrzenny, opcje ONLINE = ON i IGNORE_DUP_KEY = ON nie są prawidłowe.

Jeżeli jest określona wartość ALL, a tabeli źródłowej jest sterty, działania Odbuduj nie ma wpływu na tabeli. Żadnych indeksów nie klastrowanych skojarzone z tabeli są przebudowywane.

Operacja Odbuduj można minimalny rejestrowane, modelu odzyskiwania bazy danych ustawiono bulk-logged lub proste.

Uwaga Uwaga:

Gdy odbudować indeks XML podstawowego podległej tabeli użytkownika jest niedostępny na czas trwania operacji indeksu.

PARTYCJA

Określa, że tylko jedna partycja indeks zostanie przebudowany lub zreorganizowana. PARTYCJA nie może być określony, jeśli index_namenie jest podzielone na partycje indeks.

PARTYCJA = wszystkie rebuilds wszystkie partycje.

Przestroga Przestroga

Tworzenie i Odbudowa indeksów nonaligned dla tabeli zawierającej więcej niż 1000 partycji jest możliwe, ale nie jest obsługiwany. To może spowodować pogorszenie wydajności lub pamięci nadmiernego zużycia podczas tych czynności. Zaleca się tylko przy użyciu wyrównany indeksów, gdy liczba partycji przekracza 1000.

partition_number

Jest numerem partycji która podzielonym na partycje indeksu, który ma zostać przebudowany lub zreorganizowana. partition_numberto wyrażenie stałe, które można odwołać zmiennych. Te obejmują zmienne typu definiowanego przez użytkownika lub funkcji i funkcje zdefiniowane przez użytkownika, ale nie mogą odwoływać się Transact-SQLinstrukcji. partition_number musi istnieć lub oświadczenia nie powiedzie się.

Z (<single_partition_rebuild_index_option>)

SORT_IN_TEMPDB, MAXDOP i DATA_COMPRESSION są opcje, które mogą być określone przy ponownym zbudowaniu pojedynczą partycję (partycja = n). Indeksy XML nie można określić w operację rekonstrukcji pojedynczą partycję.

Odbudowa podzielonym na partycje indeksu nie można wykonać w trybie online. Cała tabela jest zablokowana podczas tej operacji.

DISABLE

Znaczniki indeksu jako wyłączone i niedostępny dla użytku przez Aparat baz danych. Wszelkie indeksu można wyłączyć. Definicja indeksu indeks niepełnosprawnych pozostaje w katalogu systemu bez podstawowych danych indeksu. Wyłączenie indeks klastrowany uniemożliwia dostęp użytkowników do danych tabeli podstawowej. Aby włączyć indeks, użyj ALTER ODBUDOWAĆ indeks lub utworzyć indeks Z DROP_EXISTING. Aby uzyskać więcej informacji, zobacz Indeksy wyłączenia i ograniczenia.

REORGANIZOWANIE

Określa, że na poziomie liścia indeks będzie zreorganizowane. Instrukcja ALTER REORGANIZOWAĆ INDEKSU zawsze jest wykonywane online. Oznacza to długoterminowe blokowania blokuje tabeli nie są przechowywane i kwerend lub aktualizacjach do podległej tabeli można kontynuować podczas zmianę INDEKSU REORGANIZOWANIE transakcji. Reorganizacja nie może być określone dla niepełnosprawnych indeksu lub indeks z ALLOW_PAGE_LOCKS ustaw OFF.

Z ( LOB_COMPACTION = { ON | OFF } )

Określa, że wszystkie strony, które zawierają dane wielkiego obiektu (LO) są skompaktować. The LOB data types are image, text, ntext, varchar(max), nvarchar(max), varbinary(max), and xml. Kompaktowanie danych można poprawić wykorzystania miejsca na dysku. Ustawienie domyślne to ON.

ON

Wszystkich stron, które zawierają duże obiektu danych są skompaktować.

Reorganizowanie określony indeks klastrowany Kompaktuje wszystkie kolumny LOB, które są zawarte w indeksie klastrowanym. Reorganizowanie indeks nieklastrowany Kompaktuje wszystkie kolumny LOB, które są kolumnami (włączone) w indeksie.

Jeżeli jest określona wartość ALL, wszystkie indeksy, które są skojarzone z określoną tabelę lub widok zostały zreorganizowane i wszystkie kolumny LOB, które są skojarzone z indeksem klastrowanym, skompaktować tabeli podstawowej lub nieklastrowany indeks z uwzględnionych kolumn.

OFF

Strony, które zawierają duże obiektu danych nie są skompaktować.

Wyłącz wpływa na sterty.

Klauzula LOB_COMPACTION jest ignorowane, jeśli LOB kolumny nie są obecne.

SET ( <set_index option> [ ,... n] )

Określa indeks opcji bez odbudowy lub reorganizacji indeksu. ZESTAW nie można określić dla niepełnosprawnych indeksu.

PAD_INDEX = { ON | OFF }

Określa wypełnienie indeksu. Wartość domyślna to OFF.

ON

Procent wolnego miejsca, który zostanie określony przez FILLFACTOR jest stosowany do strony poziomu pośredniego wskaźnika. Jeśli FILLFACTOR nie jest określony w tym samym czasie PAD_INDEX ma wartość ON, wypełnienie współczynnik wartości przechowywane w sys.indexes jest używany.

WYŁĄCZANIE lub fillfactornie określono

Strony poziomu pośredniego są wypełnione bliskiej zdolności. Pozostawia wystarczająco dużo miejsca na co najmniej jeden wiersz maksymalny rozmiar, że indeks może mieć, na podstawie zestawu kluczy stronach pośrednich.

Aby uzyskać więcej informacji, zobacz Utwórz indeks (języka Transact-SQL).

FILLFACTOR = fillfactor

Określa wartość procentową, która wskazuje, jak pełne Aparat baz danychnależy ustawić poziom liścia każdej strony indeksu podczas tworzenia indeksu lub zmiana. fillfactormusi mieć wartość całkowitą od 1 do 100. Wartość domyślna to 0.

Uwaga Uwaga:

Wartości współczynnika wypełnienia 0 i 100 są takie same pod każdym względem.

Jawne ustawienie FILLFACTOR dotyczy tylko gdy indeks jest po raz pierwszy utworzony lub przebudowywane. Aparat baz danychJest nie dynamicznie Zachowaj określony procent puste miejsce na stronach. Aby uzyskać więcej informacji, zobacz Utwórz indeks (języka Transact-SQL).

Aby wyświetlić ustawienie współczynnika wypełnienia, użyj sys.indexes.

Ważna informacja Ważne:

Tworzenie lub zmienianie indeks klastrowany z wartością FILLFACTOR wpływa na ilość miejsca na przechowywanie danych zajmuje, ponieważ Aparat baz danychrozkłada danych podczas tworzenia indeksu klastrowanego.

SORT_IN_TEMPDB = {ON | OFF }

Określa, czy do przechowywania wyników sortowania w tempdb. Wartość domyślna to OFF.

ON

Wyniki sortowania pośrednich, które są używane do tworzenia indeksu są przechowywane w tempdb. Jeśli tempdb jest na inny zestaw dysków niż bazy danych użytkownika, to może zmniejszyć czas potrzebny do tworzenia indeksu. Jednakże to zwiększa się ilość miejsca na dysku, który jest używany podczas budowania indeksu.

OFF

Wyniki sortowania pośrednie są przechowywane w tej samej bazie danych jako indeks.

Jeśli operację sortowania nie jest wymagana lub sortowanie może być wykonywane w pamięci, opcja SORT_IN_TEMPDB jest ignorowana.

Aby uzyskać więcej informacji, zobacz SORT_IN_TEMPDB opcja dla indeksów.

IGNORE_DUP_KEY = {ON | WYŁ.}

Określa odpowiedź na błąd podczas próby operacji wstawienia zduplikowanych wartości kluczy do unikatowego indeksu. Opcja IGNORE_DUP_KEY dotyczy tylko operacji wstawiania po utworzeniu lub przebudowywaniu indeksu. Wartość domyślna to OFF.

ON

Komunikat ostrzegawczy nastąpi, gdy zduplikowane wartości kluczy są wstawiane do unikatowego indeksu. Tylko te wiersze, wywierających ograniczenie unikatowości nie powiedzie się.

OFF

Komunikat o błędzie ma miejsce, gdy zduplikowane wartości kluczy są wstawiane do unikatowego indeksu. Cała operacja WSTAWIANIA identyfikator_transakcji wycofuje.

IGNORE_DUP_KEY nie można ustawić ON indeksy utworzone na widok, nieunikatowe indeksy, indeksy XML, indeksy przestrzenne i filtrowane indeksy.

Aby wyświetlić IGNORE_DUP_KEY, użyj sys.indexes.

Składnia zgodna z poprzednimi wersjami, Z IGNORE_DUP_KEY jest równoważne Z IGNORE_DUP_KEY = ON.

STATISTICS_NORECOMPUTE = {ON | WYŁ.}

Określa, czy statystyka dystrybucji jest ponownie obliczana. Wartość domyślna to OFF.

ON

Nieaktualne statystyki nie są automatycznie przeliczane.

OFF

Statystyka automatyczne aktualizowanie są włączone.

Aby przywrócić Statystyka automatyczne aktualizowanie, ustaw STATISTICS_NORECOMPUTE OFF, lub wykonywania aktualizacji statystyk bez klauzuli NORECOMPUTE.

Ważna informacja Ważne:

Wyłączanie automatycznego recomputation statystyk dystrybucji może uniemożliwić Optymalizator kwerend od pobrania optymalnej realizacji planów kwerend, które pociągają za sobą tabeli.

ONLINE = { ON | OFF }

Określa, czy podczas operacji indeksowania źródłowe tabele i skojarzone z nimi indeksy są dostępne dla zapytań i operacji modyfikowania danych. Wartość domyślna to OFF.

Dla XML indeksu lub indeks przestrzenny, tylko ONLINE = OFF jest obsługiwana, a jeśli ONLINE jest ustawiona na ON błąd zostanie zaokrąglona.

Uwaga Uwaga:

Operacje indeksów online nie są dostępne w każdym wydaniu Microsoft SQL Server. Aby uzyskać listę funkcji, które są obsługiwane przez wersje SQL Server, zobacz Funkcje obsługiwane przez poszczególne wersje programu SQL Server 2012.

ON

Długoterminowe blokady tabeli nie obowiązują podczas operacji indeksowania. W głównej fazie indeksowania tabela źródłowa podlega wyłącznie blokadzie Zamiar współużytkowania (IS). Dzięki temu kwerend lub aktualizacjach do podległej tabeli i indeksy, aby kontynuować. Na początku operacji blokady współużytkowane (S) bardzo krótko odbyła się obiektem źródłowym. Na końcu operacji s blokady bardzo krótko jest przechowywanych w źródle, jeśli tworzony jest indeks nieklastrowany, Zablokuj SCH-M (modyfikacja schematu) został nabyty, gdy indeks klastrowany utworzenie lub porzucone w trybie online lub gdy indeks klastrowany lub nieklastrowany są przebudowywane. Dla opcji ONLINE nie można ustawić wartości ON, jeśli tworzony indeks dotyczy lokalnej tabeli tymczasowej.

OFF

Blokady tabeli są stosowane podczas operacji indeksowania. Operację trybu offline indeksu, która tworzy, odtwarza lub spada klastrowym, przestrzenne, lub XML indeksu, lub odbudowuje lub porzuca indeks nieklastrowany, uzyskuje blokadę modyfikacji (Sch-M) schematu w tabeli. Taka blokada zapobiega wszelkiemu dostępowi użytkowników do tabeli przez cały czas trwania operacji. Operacja indeksowania w trybie offline, która skutkuje utworzeniem indeksu nieklastrowanego, nakłada na tabelę blokadę Współużytkowanie (S). Ta blokada uniemożliwia aktualizowanie tabeli, ale pozwala na operacje odczytu, np. wykonywanie instrukcji SELECT.

Aby uzyskać więcej informacji, zobacz W jaki sposób Online operacji indeksu pracy.

Indeksy, włączając indeksów na globalne tabel temp, można zrekonstruować online z następującymi wyjątkami:

  • Indeksy XML

  • Indeksy lokalnych temp tabel

  • Podzbiór podzielonym na partycje indeksu (może być przebudowane online cały indeks podzielonym na partycje.)

  • Indeksy klastrowane jeśli podległej tabeli zawiera LOB typów danych

  • Indeksów nie klastrowanych, które są zdefiniowane w image, ntext, i texttyp danych kolumny

Zbudowania indeksów nie klastrowanych można zrekonstruować online, jeśli tabela zawiera typy danych LOB, ale żaden z tych kolumn są używane w definicji indeksu jako klucz lub kolumnami.

ALLOW_ROW_LOCKS = { ON | WYŁ.}

Określa, czy blokady wierszy są dozwolone. Ustawienie domyślne to ON.

ON

Wiersz blokady są dozwolone podczas uzyskiwania dostępu do indeksu. Aparat baz danychOkreśla, kiedy są używane wiersz blokad.

OFF

Wiersz blokady nie są używane.

ALLOW_PAGE_LOCKS = { ON | WYŁ.}

Określa, czy blokady stron są dozwolone. Ustawienie domyślne to ON.

ON

Blokady strony są dozwolone przy uzyskiwaniu dostępu do indeksu. Aparat baz danychOkreśla, kiedy są używane strony blokad.

OFF

Strona blokady nie są używane.

Uwaga Uwaga:

Indeks nie zostały zreorganizowane, gdy ALLOW_PAGE_LOCKS jest ustawiony na wyłączone.

MAXDOP =max_degree_of_parallelism

Zastępuje maksymalny stopień równoległość opcji konfiguracji na czas trwania operacji indeksu. Aby uzyskać więcej informacji, zobacz Skonfigurować maksymalny stopień paralelizm opcji konfiguracji serwera. Użyj MAXDOP aby ograniczyć liczbę procesorów używanych w realizacji planu równoległego. Maksymalna wartość to 64 procesory.

Ważna informacja Ważne:

Chociaż opcja MAXDOP składniowo jest obsługiwane przez wszystkie indeksy XML dla indeksów przestrzennych lub podstawowy indeksu XML, zmienić indeks aktualnie używa tylko jeden procesor.

max_degree_of_parallelismmoże być:

1

Powoduje pomijanie generowania planu operacji równoległych.

>1

Powoduje ograniczenie maksymalnej liczby procesorów używanych w operacji równoległego indeksowania do wskazanej wartości.

0 (wartość domyślna)

Powoduje użycie faktycznej lub mniejszej liczby procesorów, zależnie od aktualnego obciążenia komputera.

Aby uzyskać więcej informacji, zobacz temat Konfigurowanie równolegle operacji indeksu.

Uwaga Uwaga:

Operacji równoległych indeksu nie są dostępne w każdym wydaniu Microsoft SQL Server. Aby uzyskać listę funkcji, które są obsługiwane przez wersje SQL Server, zobacz Funkcje obsługiwane przez poszczególne wersje programu SQL Server 2012.

DATA_COMPRESSION

Określa opcję kompresji danych określony indeks, numer partycji lub zakres partycji. Dostępne są następujące opcje:

NONE

Indeks lub określonej partycji nie są kompresowane.

ROW

Indeks lub określone partycje są kompresowane przy użyciu kompresji wiersza.

PAGE

Indeks lub określone partycje są kompresowane przy użyciu kompresji strony.

Aby uzyskać więcej informacji na temat kompresji, zobacz Kompresja danych.

NA PARTYCJACH ( { <partition_number_expression> | <range>} ,...n)

Określa partycje, do których stosuje się ustawienie DATA_COMPRESSION. Jeśli indeks nie jest podzielony na partycje, argument na PARTYCJE wygeneruje błąd. Jeśli nie podano klauzuli na PARTYCJE, opcja DATA_COMPRESSION stosuje się do wszystkich partycji indeksu podzielonym na partycje.

<partition_number_expression> można określić w następujący sposób:

  • Podać numer dla partycji, na przykład: na PARTYCJI (2).

  • Podać numery partycji dla kilku partycji poszczególnych oddzielonych przecinkami, na przykład: na PARTYCJI (1, 5).

  • Zakresy i poszczególnych partycji: na PARTYCJI (2, 4, 6-8).

<zakres> może być określona jako partycja liczb oddzielonych wyraz, na przykład: na PARTYCJI (6-8).

Aby ustawić różne typy kompresji danych dla różnych partycji, określ opcję DATA_COMPRESSION więcej niż jeden raz, na przykład:

REBUILD WITH 
(
DATA_COMPRESSION = NONE ON PARTITIONS (1), 
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
)
REBUILD WITH 
(
DATA_COMPRESSION = NONE ON PARTITIONS (1), 
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
)

Zmiana INDEKSU nie można używać do partycje indeks lub przenieść go do innej grupy plików. Ta instrukcja nie można zmodyfikować definicję indeksu, takie jak dodawanie lub usuwanie kolumn lub zmiana kolejności kolumn. Należy utworzyć indeks z klauzuli DROP_EXISTING do wykonania tych operacji.

Gdy opcja nie jest wyraźnie określony, bieżące ustawienie jest stosowane. Na przykład jeśli ustawienie FILLFACTOR nie jest określony w klauzuli ODBUDUJ, wartość współczynnika wypełnienia przechowywanych w katalogu systemu będzie używany podczas procesu rekonstrukcji. Aby wyświetlić bieżące ustawienia opcji indeksu, użyj sys.indexes.

Uwaga Uwaga:

Wartości dla ONLINE, MAXDOP i SORT_IN_TEMPDB nie są przechowywane w katalogu systemu. O ile nie podano w instrukcji index, wartość domyślna opcja jest używany.

Na komputerach wieloprocesorowych, podobnie jak inne wykonania kwerendy automatycznie zmienia ODBUDOWAĆ indeks używa więcej procesorów do skanowania i sortować operacje, które są skojarzone z modyfikowanie indeksu. Podczas uruchamiania można, czy indeks zmienia REORGANIZOWAĆ, z lub bez LOB_COMPACTION, maksymalny stopień równoległość wartość jest pojedynczą operację gwintowanych. Aby uzyskać więcej informacji, zobacz Konfigurowanie równolegle operacji indeksu.

Indeks nie zreorganizowane lub przebudowana jeśli grupę plików, w którym znajduje się jest w trybie offline lub tylko do odczytu. Gdy słowo kluczowe jest określona wartość ALL i jednego lub kilku indeksów są grupy plików trybu offline lub tylko do odczytu, deklaracja nie powiedzie się.

Odbudowa indeksów

Przebudowywanie indeksu spadnie i odtwarza indeks. To usuwa fragmentacji, ta ilość miejsca na dysku kompaktowanie stronach opartych na ustawienie współczynnika wypełnienia określony lub istniejących, a zmienia kolejność wierszy indeks stron ciągłych. Jeżeli jest określona wartość ALL, wszystkie indeksy tabeli są spadły i odbudowana w ramach pojedynczej transakcji. Ograniczenia klucza OBCEGO nie zostanie usunięty z wyprzedzeniem. Gdy Odbudowa indeksów z zakresów 128 lub więcej, Aparat baz danychpodporządkowuje deallocations rzeczywiste strony i ich skojarzone blokad, do czasu po zatwierdzeniu transakcji.

Odbudowa lub reorganizacji małych indeksy często nie powoduje zmniejszenia fragmentacji. Strony małych indeksy są przechowywane na mieszanych zakresów. Mieszane zakresy są udostępniane przez maksymalnie osiem obiektów, więc fragmentacji w małych indeksu nie może być zmniejszona po reorganizacji lub odbudowa go.

W SQL Server 2012, statystyki nie są tworzone przez skanowanie wszystkich wierszy w tabeli, gdy indeks podzielonym na partycje jest tworzony lub przebudowywane. Zamiast tego Optymalizator kwerend używa domyślny algorytm pobierania próbek do generowania statystyk. Uzyskanie Statystyka podzielonym na partycje indeksów przez skanowanie wszystkich wierszy w tabeli, należy użyć tworzenie statystyk lub aktualizacji statystyk z klauzulą FULLSCAN.

W starszych wersjach SQL Server, czasami może odbudować indeks nieklastrowany na usunięcie niespójności spowodowanych awariami sprzętu. W SQL Server 2008, a później, może nadal być możliwość naprawy takich niezgodności między indeksu i indeks klastrowany przez odbudowa trybu offline indeks nieklastrowany. Jednakże nie można naprawić niespójności indeks nieklastrowany przez przebudowywanie indeksu w trybie online, ponieważ mechanizm Odbuduj online będzie używać istniejący indeks nieklastrowany jako podstawa dla rekonstrukcji i dlatego utrzymują się niespójność. Przebudowywanie indeksu w trybie offline, natomiast będzie życie skanowanie indeksu klastrowanego (lub stosu) i aby usunąć niespójności. Zgodnie z wcześniejszymi wersjami, zaleca się odzyskania niespójności przywracając dotyczy danych z kopii zapasowej; Jednakże można naprawić niespójności indeksu przez odbudowa nieklastrowany indeks w trybie offline. Aby uzyskać więcej informacji, zobacz DBCC CHECKDB (język Transact-SQL).

Reorganizowanie indeksy

Reorganizowanie indeks używa minimalny system zasobów. Liść indeksów klastrowanych i nieklastrowany na tabele i widoki defragmentacji fizycznie kolejności stron na poziomie liścia odpowiadają logicznym, od lewej do prawej kolejności węzłów liściowych. Również reorganizacji kompaktuje stron indeksowych. Kompaktowanie opiera się na istniejącą wartość współczynnika wypełnienia. Aby wyświetlić ustawienie współczynnika wypełnienia, użyj sys.indexes.

Gdy wszystkie indeksy określonego, relacyjnych, grupowany i nie klastrowanych, i zreorganizował XML indeksów w tabeli. Niektóre ograniczenia stosowane podczas określania wszystkich, patrz definicja dla wszystkich sekcji argumenty.

Aby uzyskać więcej informacji, zobacz Reorganizowanie i indeksów.

Wyłączanie indeksy

Wyłączenie indeks uniemożliwia dostęp użytkownika do indeksu oraz indeksy klastrowane, podstawowych danych tabeli. Definicja indeksu pozostaje w katalogu systemu. Wyłączanie indeks nieklastrowany lub indeksu klastrowanego w widoku fizycznie usuwa dane indeksu. Wyłączenie indeks klastrowany uniemożliwia dostęp do danych, ale dane pozostaje Friend w drzewie B, aż wskaźnik jest przerwane lub przebudowywane. Aby wyświetlić stan indeks włączone lub wyłączone, kwerendy is_disabled kolumny w sys.indexes katalog widoku.

Jeśli tabela znajduje się w publikacji replikacji transakcyjnej, nie można wyłączyć żadnych indeksów, które są skojarzone z kolumny klucza podstawowego. Te indeksy są wymagane przez replikację. Aby wyłączyć indeks, musi najpierw usunąć tabelę z publikacji. Aby uzyskać więcej informacji, zobacz Publikowanie danych i obiektów bazy danych.

Aby włączyć indeks za pomocą instrukcji ALTER ODBUDOWAĆ indeks lub instrukcji tworzenia INDEKSU Z DROP_EXISTING. Odbudowa niepełnosprawnych indeks klastrowany nie wykonywane w trybie ONLINE opcję ON. Aby uzyskać więcej informacji, zobacz Indeksy wyłączenia i ograniczenia.

Ustawianie opcji

Można ustawić opcje ALLOW_ROW_LOCKS, ALLOW_PAGE_LOCKS, IGNORE_DUP_KEY i STATISTICS_NORECOMPUTE dla określonego indeksu bez odbudowy lub reorganizacji indeks. Zmodyfikowanej wartości są niezwłocznie stosowane do indeksu. Aby wyświetlić te ustawienia, użyj sys.indexes. Aby uzyskać więcej informacji, zobacz Ustawianie opcji indeksu.

Wiersz i opcje blokad strony

Gdy ALLOW_ROW_LOCKS = ON i ALLOW_PAGE_LOCK = ON, poziomu wierszy, na poziomie strony i poziomu tabel blokad są dozwolone przy uzyskiwaniu dostępu do indeksu. Aparat baz danychWybiera odpowiedni blokady i może eskalować blokady z zamkiem wiersza lub strony blokady tabeli.

Gdy ALLOW_ROW_LOCKS = OFF i ALLOW_PAGE_LOCK = OFF, tylko blokady poziomie tabeli jest dozwolone przy uzyskiwaniu dostępu do indeksu.

Jeżeli określono wszystkie ustawione opcje Zablokuj wiersza lub strony, ustawienia są stosowane do wszystkich indeksów. Po tabeli źródłowej jest sterty, ustawienia są stosowane w następujący sposób:

ALLOW_ROW_LOCKS = ON lub OFF

Sterty i wszelkie skojarzone indeksów nie klastrowanych.

ALLOW_PAGE_LOCKS = ON

Sterty i wszelkie skojarzone indeksów nie klastrowanych.

ALLOW_PAGE_LOCKS = OFF

Pełni do zbudowania indeksów nie klastrowanych. Oznacza to, że wszystkie strony blokady nie są dozwolone na indeksów nie klastrowanych. Na stercie tylko udostępnionego (S), aktualizacji (U) i blokad wyłączności (X) na stronie nie są dozwolone. Aparat baz danychWciąż można uzyskać blokady konwersji strony (IS, IU lub IX) do celów wewnętrznych.

Online operacji indeksu

Gdy przebudowywanie indeksu i ONLINE opcja jest ustawiona na ON, obiektów, tabel i indeksy skojarzone, są dostępne dla modyfikacji kwerendy i danych. Blokady tabeli są przechowywane tylko przez bardzo krótki czas podczas procesu przeróbki.

Reorganizowanie indeks zawsze jest wykonywane online. Proces nie posiadają długoterminowej blokady i, w związku z tym, nie blokuje kwerend lub aktualizacji, które są uruchomione.

Można wykonywać operacji jednoczesnych indeksów online dla tej samej tabeli, tylko kiedy wykonaj następujące czynności:

  • Tworzenie wielu indeksów nie klastrowanych.

  • Reorganizowanie różnych indeksów dla tej samej tabeli.

  • Reorganizowanie różnych indeksach podczas przebudowywania porządkuje indeksów dla tej samej tabeli.

Wszystkich innych operacji indeksów online w tym samym czasie zakończyć się niepowodzeniem. Na przykład nie można przebudować jednocześnie dwa lub więcej indeksów dla tej samej tabeli lub utworzyć nowy indeks podczas przebudowywania istniejący indeks dla tej samej tabeli.

Aby uzyskać więcej informacji, zobacz Wykonywanie operacji indeksu Online.

Przestrzenne ograniczenia indeksu

Gdy odbudować indeks przestrzenny podległej tabeli użytkownika jest niedostępny na czas trwania operacji indeksu, ponieważ indeks przestrzenny posiada blokadę schematu.

Ograniczenie klucza podstawowego w tabeli użytkownika nie mogą być modyfikowane podczas indeks przestrzenny jest zdefiniowany w kolumnie tabeli. Aby zmienić ograniczenie klucza podstawowego, najpierw upuść każdy indeks przestrzenny tabeli. Po zmodyfikowaniu ograniczenia PRIMARY KEy, można odtworzyć każdego indeksów przestrzennych.

W pojedynczą partycję odbudować operacji, nie można określić żadnych indeksów przestrzennych. Jednakże w rekonstrukcji pełną partycji można określić indeksy przestrzenne.

Aby zmienić opcje, które są specyficzne dla indeksów przestrzennych, takich jak BOUNDING_BOX lub siatki, można użyć instrukcji CREATE INDEX PRZESTRZENNYCH, która określa DROP_EXISTING = ON, upuść indeks przestrzenny lub utworzyć nową. Na przykład, zobacz Utwórz indeks PRZESTRZENNY (języka Transact-SQL).

Indeks Columnstore ograniczenia

Indeks columnstore nie może być zmieniona. Upuść i ponownie utwórz indeks columnstore zamiast.

Kompresja danych

Aby uzyskać więcej informacji na temat kompresowania danych, zobacz Kompresja danych.

Do oceny spodziewanego wpływu stanu kompresji na tabelę, indeks lub partycję służy procedura składowana sp_estimate_data_compression_savings.

Podzielonym na partycje indeksów, obowiązują następujące ograniczenia:

  • Podczas używania zmienia wszystkie INDEKSU... ,nie można zmienić ustawienia kompresji pojedynczą partycję, jeśli tabela zawiera indeksy nonaligned.

  • Wskaźnik zmienia <indeksu> ... ODBUDUJ PARTYCJI... Składnia odbudowuje określonej partycji indeksu.

  • Wskaźnik zmienia <indeksu> ... ODBUDOWANIA Z... Składnia odtwarza wszystkie partycje indeksu.

Statystyki

Gdy użytkownik wykonuje ALTER INDEX ALL …w tabeli, aktualizowane są tylko stowarzyszonych statystyki z indeksami. Automatyczna lub ręczna statystyk utworzonych w tabeli (zamiast indeksu) nie są aktualizowane.

Aby wykonać zmianę INDEKSU, co najmniej, wymagane jest uprawnienie ALTER w tabeli lub widoku.

A.Odbudowywanie indeksu

Poniższy przykład odtwarza pojedynczy indeks na Employeetabeli.

USE AdventureWorks2012;
GO
ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
REBUILD;
GO


B.Odbudowa wszystkie indeksy tabeli i określając opcje

W następującym przykładzie określono słowa kluczowego ALL. Odtwarza wszystkie indeksy skojarzone z tabeli. Podano trzy opcje.

USE AdventureWorks2012;
GO
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON);
GO


C.Reorganizowanie indeks z obiektu LOB zagęszczania

Poniższy przykład reorganizuje jeden indeks klastrowany. Ponieważ indeks zawiera dane typu LOB na poziomie liścia, deklaracji również Kompaktuje wszystkie strony, które zawierają dane dużego obiektu. Należy zauważyć, że określanie opcji Z (LOB_COMPACTION) nie jest wymagana, ponieważ wartość domyślna jest ON.

USE AdventureWorks2012;
GO
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto
REORGANIZE ;
GO


D.Ustawianie opcji na indeks

Poniższy przykład przedstawia kilka opcji w indeksie AK_SalesOrderHeader_SalesOrderNumber.

USE AdventureWorks2012;
GO
ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
    Sales.SalesOrderHeader
SET (
    STATISTICS_NORECOMPUTE = ON,
    IGNORE_DUP_KEY = ON,
    ALLOW_PAGE_LOCKS = ON
    ) ;
GO


E.Wyłączanie indeks

Poniższy przykład wyłącza indeks nieklastrowany na Employeetabeli.

USE AdventureWorks2012;
GO
ALTER INDEX IX_Employee_OrganizationNode ON HumanResources.Employee
DISABLE ;
GO


F.Wyłączenie ograniczeń

Poniższy przykład wyłącza ograniczenia PRIMARY KEY, wyłączając indeks klucza podstawowego. Ograniczenie klucza OBCEGO w tabeli podstawowej jest automatycznie wyłączane i wyświetlany jest komunikat ostrzegawczy.

USE AdventureWorks2012;
GO
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department
DISABLE ;
GO


Zestaw wyników zwraca ten komunikat ostrzegawczy.

Warning: Foreign key 'FK_EmployeeDepartmentHistory_Department_DepartmentID'

on table 'EmployeeDepartmentHistory' referencing table 'Department'

was disabled as a result of disabling the index 'PK_Department_DepartmentID'.

G.Włączenie ograniczenia

Poniższy przykład włącza ograniczeń klucza podstawowego i klucza OBCEGO, które zostały wyłączone w przykładzie F.

Ograniczenie klucza podstawowego jest włączona przez przebudowywanie indeksu klucza podstawowego.

USE AdventureWorks2012;
GO
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department
REBUILD ;
GO


Ograniczenie klucza OBCEGO jest włączone.

ALTER TABLE HumanResources.EmployeeDepartmentHistory
CHECK CONSTRAINT FK_EmployeeDepartmentHistory_Department_DepartmentID;
GO


H.Przebudowywanie indeksu podzielonym na partycje

Poniższy przykład odbudowuje pojedynczą partycję, numer partycji 5, podzielone na partycje indeksu IX_TransactionHistory_TransactionDate.

USE AdventureWorks;
GO
-- Verify the partitioned indexes.
SELECT *
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL, NULL);
GO
--Rebuild only partition 5.
ALTER INDEX IX_TransactionHistory_TransactionDate
ON Production.TransactionHistory
REBUILD Partition = 5;
GO
USE AdventureWorks;
GO
-- Verify the partitioned indexes.
SELECT *
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL, NULL);
GO
--Rebuild only partition 5.
ALTER INDEX IX_TransactionHistory_TransactionDate
ON Production.TransactionHistory
REBUILD Partition = 5;
GO

I.Zmiana ustawienia kompresji indeksu

Poniższy przykład odtwarza indeks w tabeli nonpartitioned.

ALTER INDEX IX_INDEX1 
ON T1
REBUILD 
WITH ( DATA_COMPRESSION = PAGE )
GO
ALTER INDEX IX_INDEX1 
ON T1
REBUILD 
WITH ( DATA_COMPRESSION = PAGE )
GO

Aby poznać więcej przykładów kompresowania danych, zobacz Kompresja danych.

Czy oceniasz te materiały jako pomocne?
(Pozostało znaków: 1500)
Dziękujemy za opinię.

Zawartość społeczności

Dodaj
Pokaż:
© 2014 Microsoft. Wszelkie prawa zastrzeżone.