Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Określa zestaw opcji, które można zastosować do indeksu, który jest częścią definicji ograniczenia, która jest tworzona przy użyciu alter TABLE.
Pełny opis opcji indeksu można znaleźć w temacie CREATE INDEX (TWORZENIE INDEKSu).
Transact-SQL konwencje składni
Syntax
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | OFF }
| SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }
[ ON PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ]
| XML_COMPRESSION = { ON | OFF }
[ ON PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ]
| ONLINE = { ON | OFF }
| RESUMABLE = { ON | OFF }
| MAX_DURATION = <time> [ MINUTES ]
}
<range> ::=
<partition_number_expression> TO <partition_number_expression>
<single_partition_rebuild__option> ::=
{
SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE } }
| ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}
<low_priority_lock_wait>::=
{
WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] ,
ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}
Arguments
PAD_INDEX = { ON | WYŁ. }
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa dopełnienie indeksu. Wartość domyślna to OFF.
ON
Procent wolnego miejsca określonego przez
FILLFACTORprogram jest stosowany do stron na poziomie pośrednim indeksu.Nie określono off lub
fillfactor Strony na poziomie pośrednim są wypełniane w pobliżu pojemności, pozostawiając wystarczającą ilość miejsca dla co najmniej jednego wiersza maksymalnego rozmiaru indeksu, biorąc pod uwagę zestaw kluczy na stronach pośrednich.
FILLFACTOR = wypełnienie
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa wartość procentową wskazującą, jak pełny aparat bazy danych powinien ustawić poziom liścia każdej strony indeksu podczas tworzenia lub modyfikowania indeksu. Określona wartość musi być liczbą całkowitą z zakresu od 1 do 100. Wartość domyślna to 0.
Note
Wartości współczynnika wypełnienia 0 i 100 są identyczne we wszystkich aspektach.
IGNORE_DUP_KEY = { ON | WYŁ. }
Określa typ odpowiedzi, gdy operacja wstawiania próbuje wstawić zduplikowane wartości klucza do unikatowego indeksu. Opcja IGNORE_DUP_KEY dotyczy tylko operacji wstawiania po utworzeniu lub ponownym utworzeniu indeksu. Opcja nie ma wpływu podczas wykonywania CREATE INDEX, ALTER INDEXlub UPDATE. Wartość domyślna to OFF.
ON
Komunikat ostrzegawczy występuje, gdy zduplikowane wartości klucza są wstawione do unikatowego indeksu. Tylko wiersze naruszające ograniczenie unikatowości kończą się niepowodzeniem.
OFF
Komunikat o błędzie występuje, gdy zduplikowane wartości klucza są wstawione do unikatowego indeksu. Cała operacja
INSERTjest cofana.
IGNORE_DUP_KEY Nie można ustawić wartości na ON wartość dla indeksów utworzonych w widoku, indeksach niepowiązanych, indeksach XML, indeksach przestrzennych i filtrowanych indeksach.
Aby wyświetlić IGNORE_DUP_KEY, użyj sys.indexes.
W składni zgodnej z poprzednimi wersjami WITH IGNORE_DUP_KEY jest równoważna WITH IGNORE_DUP_KEY = ON.
STATISTICS_NORECOMPUTE = { ON | WYŁ. }
Wyłącz lub włącz opcję automatycznej aktualizacji statystyk, AUTO_STATISTICS_UPDATE, dla statystyk związanych z określonymi indeksami. Wartość domyślna to OFF.
ON
Automatyczne aktualizacje statystyk są wyłączone po ponownym skompilowania indeksu.
OFF
Automatyczne aktualizacje statystyk są włączone po ponownym skompilowania indeksu.
Aby przywrócić automatyczne aktualizowanie statystyk, ustaw STATISTICS_NORECOMPUTE na OFFlub wykonaj UPDATE STATISTICS bez klauzuli NORECOMPUTE.
Warning
Jeśli wyłączysz automatyczne aktualizowanie statystyk, może to uniemożliwić optymalizatorowi zapytań wybranie optymalnych planów wykonywania zapytań obejmujących tabelę. Tej opcji należy używać oszczędnie i tylko przez kwalifikowanego administratora bazy danych.
To ustawienie nie uniemożliwia automatycznej aktualizacji za pomocą pełnego skanowania statystyk związanych z indeksem podczas operacji odbudowy.
ALLOW_ROW_LOCKS = { ON | WYŁ. }
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa, czy blokady wierszy są dozwolone. Wartość domyślna to WŁĄCZONE.
ON
Blokady wierszy są dozwolone podczas uzyskiwania dostępu do indeksu. Aparat bazy danych określa, kiedy są używane blokady wierszy.
OFF
Blokady wierszy nie są używane.
ALLOW_PAGE_LOCKS = { ON | WYŁ. }
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa, czy blokady strony są dozwolone. Wartość domyślna to WŁĄCZONE.
ON
Blokady stron są dozwolone podczas uzyskiwania dostępu do indeksu. Aparat bazy danych określa, kiedy są używane blokady strony.
OFF
Blokady stron nie są używane.
OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | WYŁ. }
Dotyczy: SQL Server 2019 (15.x) i nowsze wersje
Określa, czy należy zoptymalizować pod kątem rywalizacji o wstawienie ostatniej strony. Wartość domyślna to OFF. Aby uzyskać więcej informacji, zobacz sekcję Sekwencyjne klucze artykułu CREATE INDEX .
SORT_IN_TEMPDB = { ON | WYŁ. }
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa, czy mają być przechowywane wyniki sortowania w pliku tempdb. Wartość domyślna to OFF.
ON
Wyniki sortowania pośredniego używane do kompilowania indeksu są przechowywane w
tempdb. Może to skrócić czas wymagany do utworzenia indeksu, jeślitempdbznajduje się w innym zestawie dysków niż baza danych użytkownika. Zwiększa to jednak ilość miejsca na dysku używanego podczas kompilacji indeksu.OFF
Wyniki sortowania pośredniego są przechowywane w tej samej bazie danych co indeks.
ONLINE = { ON | WYŁ. }
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa, czy tabele bazowe i skojarzone indeksy są dostępne dla zapytań i modyfikacji danych podczas operacji indeksu. Wartość domyślna to OFF.
REBUILD można wykonać jako operację ONLINE .
Note
Nie można utworzyć unikatowych indeksów nieklastrowanych w trybie online. Obejmuje to indeksy, które są tworzone z powodu UNIQUE ograniczenia lub PRIMARY KEY .
ON
Długoterminowe blokady tabeli nie są przechowywane podczas operacji indeksowania. W fazie głównej operacji indeksowania blokada udziału intencji (IS) jest przechowywana w tabeli źródłowej. Umożliwia to kontynuowanie zapytań lub aktualizacji podstawowej tabeli i indeksów. Na początku operacji blokada Współdzielona (S) jest przechowywana w obiekcie źródłowym przez krótki czas. Na końcu operacji przez krótki czas jest uzyskiwana blokada S (współużytkowana) w źródle, jeśli tworzony jest indeks nieklastrowany; lub blokada Sch-M (modyfikacja schematu) jest uzyskiwana, gdy indeks klastrowany jest tworzony lub porzucany w trybie online i gdy indeks klastrowany lub nieklastrowany jest odbudowywany. Mimo że blokady indeksu online są krótkimi blokadami metadanych, zwłaszcza blokada Sch-M musi czekać na ukończenie wszystkich transakcji blokujących w tej tabeli. W czasie oczekiwania Sch-M blokada blokuje wszystkie inne transakcje, które oczekują za tą blokadą podczas uzyskiwania dostępu do tej samej tabeli.
ONLINEnie można ustawić naONpodczas tworzenia indeksu w lokalnej tabeli tymczasowej.Note
Ponowne kompilowanie indeksu online może ustawić opcje low_priority_lock_wait opisane w dalszej części tej sekcji. low_priority_lock_wait zarządza priorytetem blokady S i Sch-M podczas ponownego kompilowania indeksu online.
OFF
Blokady tabeli są stosowane podczas operacji indeksowania. Zapobiega to dostępowi wszystkich użytkowników do tabeli bazowej podczas operacji. Operacja indeksu w trybie offline, która tworzy, kompiluje lub usuwa indeks klastrowany albo usuwa indeks nieklastrowany, uzyskuje modyfikację schematu (Sch-M) blokady w tabeli. Zapobiega to dostępowi wszystkich użytkowników do tabeli bazowej podczas operacji. Operacja indeksu offline, która tworzy indeks nieklastrowany, uzyskuje blokadę współużytkowaną (S) w tabeli. Zapobiega to aktualizacjom tabeli bazowej, ale umożliwia wykonywanie operacji odczytu, takich jak
SELECTinstrukcje.
Aby uzyskać więcej informacji, zobacz How Online Index Operations Work.
Note
Operacje indeksowania online nie są dostępne w każdej wersji programu Microsoft SQL Server. Aby uzyskać listę funkcji obsługiwanych przez wersje programu SQL Server, zobacz Editions i obsługiwane funkcje programu SQL Server 2022.
WZNAWIANIE = { WŁ. | WYŁ.}
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje
Określa, czy operacja ALTER TABLE ADD CONSTRAINT jest wznawiana. Operacja dodawania ograniczeń tabeli jest wznawiana, gdy ON. Operacja dodawania ograniczeń tabeli nie jest wznawiana, gdy OFF. Wartość domyślna to OFF. Gdy opcja jest ustawiona RESUMABLE na ONwartość , wymagana jest opcja ONLINE = ON .
MAX_DURATION w przypadku użycia z RESUMABLE = ON (wymaga ONLINE = ON) wskazuje czas (wartość całkowita określona w minutach), że wznawiana operacja dodawania ograniczeń online jest wykonywana przed wstrzymaniem. Jeśli nie zostanie określony, operacja będzie kontynuowana do momentu ukończenia.
MAXDOP jest również obsługiwany w RESUMABLE = ON programie .
Aby uzyskać więcej informacji na temat włączania i używania operacji wznawianych ALTER TABLE ADD CONSTRAINT , zobacz Wznawianie ograniczeń tabeli.
MAXDOP = max_degree_of_parallelism
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Zastępuje opcję konfiguracji maksymalnego stopnia równoległości podczas operacji indeksowania. Aby uzyskać więcej informacji, zobacz Konfigurowanie maksymalnego stopnia równoległości (opcja konfiguracji serwera). Użyj MAXDOP polecenia , aby ograniczyć liczbę procesorów używanych w równoległym wykonywaniu planu. Maksymalna wartość to 64 procesory.
max_degree_of_parallelism może to być:
-
1: pomija generowanie planu równoległego. -
>1: ogranicza maksymalną liczbę procesorów używanych w operacji indeksowania równoległego do określonej liczby. -
0(ustawienie domyślne): używa rzeczywistej liczby procesorów lub mniej na podstawie bieżącego obciążenia systemu.
Aby uzyskać więcej informacji, zobacz Konfigurowanie operacji indeksu równoległego.
Note
Operacje indeksowania równoległego nie są dostępne w każdej wersji programu Microsoft SQL Server. Aby uzyskać listę funkcji obsługiwanych przez wersje programu SQL Server, zobacz Editions i obsługiwane funkcje programu SQL Server 2022.
DATA_COMPRESSION
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa opcję kompresji danych dla określonej tabeli, numeru partycji lub zakresu partycji. Opcje są następujące:
NONE
Tabele lub określone partycje nie są kompresowane. Dotyczy tylko tabel magazynu wierszy; nie ma zastosowania do tabel magazynu kolumn.
ROW
Tabele lub określone partycje są kompresowane przy użyciu kompresji wierszy. Dotyczy tylko tabel magazynu wierszy; nie ma zastosowania do tabel magazynu kolumn.
PAGE
Tabele lub określone partycje są kompresowane przy użyciu kompresji strony. Dotyczy tylko tabel magazynu wierszy; nie ma zastosowania do tabel magazynu kolumn.
COLUMNSTORE
Dotyczy: SQL Server 2014 (12.x) i nowsze wersje
Dotyczy tylko tabel magazynu kolumn.
COLUMNSTOREokreśla dekompresowanie partycji, która została skompresowana za pomocąCOLUMNSTORE_ARCHIVEopcji . Po przywróceniuCOLUMNSTOREdanych indeks będzie nadal kompresowany przy użyciu kompresji magazynu kolumn, która jest używana dla wszystkich tabel magazynu kolumn.COLUMNSTORE_ARCHIVE
Dotyczy: SQL Server 2014 (12.x) i nowsze wersje
Dotyczy tylko tabel magazynu kolumn, które są tabelami przechowywanymi w klastrowanym indeksie magazynu kolumn.
COLUMNSTORE_ARCHIVEdodatkowo kompresuje określoną partycję do mniejszego rozmiaru. Może to być używane do archiwizacji lub w innych sytuacjach, które wymagają mniejszej ilości miejsca do magazynowania i mogą pozwolić sobie na więcej czasu na przechowywanie i pobieranie
Aby uzyskać więcej informacji na temat kompresji, zobacz Kompresja danych.
XML_COMPRESSION
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje, Azure SQL Database i Azure SQL Managed Instance.
Określa opcję kompresji XML dla wszystkich kolumn typu danych xml xml w tabeli. Opcje są następujące:
ON
Kolumny używające xml typu danych są kompresowane.
OFF
Kolumny używające typu danych xml nie są kompresowane.
NA PARTYCJACH ( { <partition_number_expression> | <zakres> } [ ,... n ] )
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje
Określa partycje, do których mają zastosowanie ustawienia DATA_COMPRESSION lub XML_COMPRESSION. Jeśli tabela nie jest partycjonowana, argument ON PARTITIONS generuje błąd. Jeśli klauzula ON PARTITIONS nie jest podana, DATA_COMPRESSION opcja lub XML_COMPRESSION ma zastosowanie do wszystkich partycji tabeli partycjonowanej.
<partition_number_expression> można określić w następujący sposób:
- Podaj liczbę partycji, na przykład:
ON PARTITIONS (2). - Podaj numery partycji dla kilku pojedynczych partycji rozdzielonych przecinkami, na przykład:
ON PARTITIONS (1, 5). - Podaj zarówno zakresy, jak i poszczególne partycje, na przykład:
ON PARTITIONS (2, 4, 6 TO 8).
<range> można określić jako numery partycji rozdzielone wyrazem TO, na przykład: ON PARTITIONS (6 TO 8).
Aby ustawić różne typy kompresji danych dla różnych partycji, określ opcję DATA_COMPRESSION więcej niż raz, na przykład:
--For rowstore tables
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)
)
--For columnstore tables
REBUILD WITH
(
DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (1, 3, 5),
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4, 6 TO 8)
)
<single_partition_rebuild__option>
W większości przypadków ponowne kompilowanie indeksu również ponownie kompiluje wszystkie partycje indeksu partycjonowanego. Następujące opcje, po zastosowaniu do pojedynczej partycji, nie kompilują wszystkich partycji.
SORT_IN_TEMPDBMAXDOPDATA_COMPRESSIONXML_COMPRESSION
low_priority_lock_wait
Dotyczy: SQL Server 2014 (12.x) i nowsze wersje
Ponowne SWITCH kompilowanie indeksu lub online kończy się zaraz po zakończeniu operacji blokowania dla tej tabeli.
WAIT_AT_LOW_PRIORITY wskazuje, że jeśli nie można natychmiast ukończyć operacji ponownego SWITCH kompilowania indeksu lub online, czeka. Operacja przechowuje blokady o niskim priorytcie, co umożliwia kontynuowanie innych operacji, które przechowują blokady powodujące konflikt z instrukcją DDL. Pominięcie opcji WAIT AT LOW PRIORITY jest równoważne WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).
MAX_DURATION = czas [ MINUTY ]
Czas oczekiwania (wartość całkowita określona w minutach), który musi zostać nabyty przez funkcję ponownej SWITCH kompilacji indeksu lub online, czeka podczas wykonywania polecenia DDL. Operacja ponownego SWITCH kompilowania indeksu lub online próbuje wykonać natychmiast. Jeśli operacja zostanie zablokowana przez MAX_DURATION ten czas, zostanie wykonana jedna z ABORT_AFTER_WAIT akcji.
MAX_DURATION czas jest zawsze w minutach, a słowo MINUTES można pominąć.
ABORT_AFTER_WAIT = { NONE | SELF | BLOKOWANIA }
NONE
Kontynuuje operację ponownego kompilowania indeksu
SWITCHlub online bez zmiany priorytetu blokady (przy użyciu zwykłego priorytetu).SELF
Kończy obecnie wykonywaną operację DDL ponownego kompilowania indeksu
SWITCHlub online bez podejmowania żadnych akcji.BLOCKERS
Zabija wszystkie transakcje użytkownika, które blokują obecnie operację DDL indeksu
SWITCHlub online, aby operacja mogła kontynuować.BLOCKERSALTER ANY CONNECTIONwymaga uprawnienia.