Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Určuje sadu možností, které lze použít na index, který je součástí definice omezení, která je vytvořena pomocí ALTER TABLE.
Úplný popis možností indexu najdete v tématu CREATE INDEX.
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 | VYPNUTO }
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje odsazení indexu. Výchozí hodnota je OFF.
ON
Procento volného místa určeného parametrem
FILLFACTORse použije na stránky indexu na střední úrovni.Nezadá se
fillfactor Stránky střední úrovně jsou vyplněné tak, aby se blíží kapacitě, takže alespoň jeden řádek maximální velikosti indexu mohl mít dostatek místa vzhledem k sadě klíčů na mezilehlých stránkách.
FILLFACTOR = fillfactor
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje procento, které určuje, jak by měl databázový stroj během vytváření nebo změny indexu nastavit úroveň listu každé stránky indexu. Zadaná hodnota musí být celočíselná hodnota od 1 do 100. Výchozí hodnota je 0.
Note
Hodnoty výplňového faktoru 0 a 100 jsou ve všech ohledech stejné.
IGNORE_DUP_KEY = { ON | VYPNUTO }
Určuje typ odpovědi, když se operace vložení pokusí vložit duplicitní hodnoty klíče do jedinečného indexu. Možnost IGNORE_DUP_KEY se vztahuje pouze na operace vložení po vytvoření nebo vytvoření indexu. Možnost nemá žádný vliv při provádění CREATE INDEX, ALTER INDEXnebo UPDATE. Výchozí hodnota je OFF.
ON
Při vložení duplicitních hodnot klíče do jedinečného indexu dojde k upozornění. Pouze řádky, které porušují omezení jedinečnosti, selžou.
OFF
Při vložení duplicitních hodnot klíče do jedinečného indexu se zobrazí chybová zpráva. Celá operace
INSERTse vrátí zpět.
IGNORE_DUP_KEY Nelze nastavit na ON indexy vytvořené v zobrazení, neunique indexy, indexy XML, prostorové indexy a filtrované indexy.
Chcete-li zobrazit
V zpětně kompatibilní syntaxi je WITH IGNORE_DUP_KEY ekvivalentní WITH IGNORE_DUP_KEY = ON.
STATISTICS_NORECOMPUTE = { ON | VYPNUTO }
Zakažte nebo povolte možnost AUTO_STATISTICS_UPDATEautomatické aktualizace statistiky pro statistiky související se zadanými indexy. Výchozí hodnota je OFF.
ON
Automatické aktualizace statistik jsou po znovu sestavení indexu zakázány.
OFF
Automatické aktualizace statistik jsou povoleny po znovu sestavení indexu.
Pokud chcete obnovit automatickou aktualizaci statistik, nastavte STATISTICS_NORECOMPUTE na OFFnebo spusťte UPDATE STATISTICS bez klauzule NORECOMPUTE.
Warning
Pokud zakážete automatickou aktualizaci statistik, může zabránit optimalizaci dotazů v výběru optimálních plánů provádění pro dotazy, které zahrnují tabulku. Tuto možnost byste měli používat střídmě a pouze kvalifikovaným správcem databáze.
Toto nastavení nezabrání automatické aktualizaci s úplným prohledáním statistik souvisejících s indexem během operace opětovného sestavení.
ALLOW_ROW_LOCKS = { ON | VYPNUTO }
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje, jestli jsou povolené zámky řádků. Výchozí hodnota je ZAPNUTÁ.
ON
Zámky řádků jsou povoleny při přístupu k indexu. Databázový stroj určuje, kdy se používají zámky řádků.
OFF
Zámky řádků se nepoužívají.
ALLOW_PAGE_LOCKS = { ON | VYPNUTO }
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje, jestli jsou povolené zámky stránek. Výchozí hodnota je ZAPNUTÁ.
ON
Zámky stránek jsou povoleny při přístupu k indexu. Databázový stroj určuje, kdy se používají zámky stránek.
OFF
Zámky stránek se nepoužívají.
OPTIMIZE_FOR_SEQUENTIAL_KEY = { ON | VYPNUTO }
Platí pro: SQL Server 2019 (15.x) a novější verze
Určuje, jestli se má optimalizovat pro kolizí vložení poslední stránky. Výchozí hodnota je OFF. Další informace najdete v části Sekvenční klíče článku CREATE INDEX .
SORT_IN_TEMPDB = { ON | VYPNUTO }
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje, zda se mají ukládat výsledky řazení .tempdb Výchozí hodnota je OFF.
ON
Přechodné výsledky řazení, které se používají k sestavení indexu, jsou uloženy v
tempdb. To může zkrátit dobu potřebnou k vytvoření indexu, pokudtempdbje na jiné sadě disků než uživatelská databáze. Tím se ale zvýší množství místa na disku, které se použije při sestavení indexu.OFF
Výsledky zprostředkujícího řazení jsou uloženy ve stejné databázi jako index.
ONLINE = { ON | VYPNUTO }
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje, jestli jsou podkladové tabulky a přidružené indexy dostupné pro dotazy a úpravy dat během operace indexu. Výchozí hodnota je OFF.
REBUILD lze provést jako ONLINE operaci.
Note
Jedinečné neclusterované indexy nejde vytvořit online. To zahrnuje indexy vytvořené z důvodu UNIQUE omezení nebo PRIMARY KEY omezení.
ON
Dlouhodobé zámky tabulek se během operace indexu neudržují. Během hlavní fáze operace indexu se ve zdrojové tabulce uchovává pouze zámek sdílení záměru (IS). To umožňuje pokračovat v dotazech nebo aktualizacích podkladové tabulky a indexů. Na začátku operace se na zdrojovém objektu po krátkou dobu uchovává zámek Shared (S). Na konci operace se po krátkou dobu získá zámek S (Shared) ve zdroji, pokud se vytváří neclusterovaný index; nebo se zámek Sch-M (úprava schématu) získá při vytvoření nebo vyřazení clusterovaného indexu online a při vytvoření clusterovaného nebo neclusterovaného indexu. I když jsou zámky online indexů krátké zámky metadat, zejména zámek Sch-M musí čekat na dokončení všech blokujících transakcí v této tabulce. Během doby čekání Sch-M zámek blokuje všechny ostatní transakce, které čekají za tímto zámkem při přístupu ke stejné tabulce.
ONLINEnelze nastavit naONpři vytváření indexu v místní dočasné tabulce.Note
Opětovné sestavení online indexu může nastavit low_priority_lock_wait možnosti popsané dále v této části. low_priority_lock_wait spravuje prioritu zámku S a Sch-M během opětovného sestavení indexu online.
OFF
Zámky tabulek se použijí během operace indexu. Tím se během operace zabrání všem uživatelům přístup k podkladové tabulce. Operace offline indexu, která vytvoří, znovu sestaví nebo zahodí clusterovaný index nebo znovu sestaví nebo zamkne neclusterovaný index, získá v tabulce zámek schématu (Sch-M). Tím se během operace zabrání všem uživatelům přístup k podkladové tabulce. Operace offline indexu, která vytvoří neclusterovaný index, získá v tabulce zámek Shared (S). To brání aktualizacím podkladové tabulky, ale umožňuje operace čtení, jako
SELECTjsou příkazy.
Další informace najdete v tématu Fungování operací indexu online.
Note
Online indexovací operace nejsou k dispozici v každé edici Microsoft SQL Serveru. Seznam funkcí podporovaných edicemi SQL Serveru najdete v tématu Edice a podporované funkce systému SQL Server 2022.
RESUMABLE = { ON | VYPNUTO}
platí pro: SQL Server 2022 (16.x) a novější verze
Určuje, zda je operace ALTER TABLE ADD CONSTRAINT obnovitelná. Operace přidání omezení tabulky se dá obnovit, když ON. Operace přidání omezení tabulky není při OFFobnovitelná. Výchozí hodnota je OFF.
RESUMABLE Pokud je tato možnost nastavená na ON, je tato možnost ONLINE = ON povinná.
MAX_DURATION při použití s RESUMABLE = ON (vyžaduje ONLINE = ON) označuje čas (celočíselná hodnota zadaná v minutách), že se před pozastavením provede operace obnovení online přidání omezení. Pokud není zadáno, operace pokračuje až do dokončení.
MAXDOP podporuje RESUMABLE = ON se také.
Další informace o povolení a používání resumable ALTER TABLE ADD CONSTRAINT operací naleznete v tématu Obnovitelné přidání omezení tabulky.
MAXDOP = max_degree_of_parallelism
platí pro: SQL Server 2008 (10.0.x) a novější verze
Přepíše maximální stupeň konfigurace paralelismu během operace indexu. Další informace najdete v tématu Konfigurace maximálního stupně paralelismu (možnost konfigurace serveru). Slouží MAXDOP k omezení počtu procesorů používaných při paralelním provádění plánu. Maximum je 64 procesorů.
max_degree_of_parallelism může být:
-
1: Potlačí generování paralelního plánu. -
>1: Omezuje maximální počet procesorů použitých v paralelní operaci indexu na zadané číslo. -
0(výchozí): Používá skutečný počet procesorů nebo méně procesorů na základě aktuální systémové úlohy.
Další informace naleznete v tématu Konfigurace paralelních indexových operací.
Note
Paralelní indexové operace nejsou k dispozici v každé edici Microsoft SQL Serveru. Seznam funkcí podporovaných edicemi SQL Serveru najdete v tématu Edice a podporované funkce systému SQL Server 2022.
DATA_COMPRESSION
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje možnost komprese dat pro zadanou tabulku, číslo oddílu nebo rozsah oddílů. Možnosti jsou následující:
NONE
Tabulky nebo zadané oddíly nejsou komprimované. Platí pouze pro tabulky rowstore; se nevztahuje na tabulky columnstore.
ROW
Tabulky nebo zadané oddíly se komprimují pomocí komprese řádků. Platí pouze pro tabulky rowstore; se nevztahuje na tabulky columnstore.
PAGE
Tabulky nebo zadané oddíly se komprimují pomocí komprese stránky. Platí pouze pro tabulky rowstore; se nevztahuje na tabulky columnstore.
COLUMNSTORE
Platí pro: SQL Server 2014 (12.x) a novější verze
Platí pouze pro tabulky columnstore.
COLUMNSTOREurčuje dekomprimaci oddílu, který byl komprimován sCOLUMNSTORE_ARCHIVEmožností. Po obnoveníCOLUMNSTOREdat bude index nadále komprimován pomocí komprese columnstore, která se používá pro všechny tabulky columnstore.COLUMNSTORE_ARCHIVE
Platí pro: SQL Server 2014 (12.x) a novější verze
Platí pouze pro tabulky columnstore, které jsou tabulky uložené s clusterovaným indexem columnstore.
COLUMNSTORE_ARCHIVEdále komprimuje zadaný oddíl na menší velikost. Můžete ho použít pro archivaci nebo v jiných situacích, které vyžadují méně úložiště a můžou si dovolit více času pro ukládání a načítání.
Další informace o kompresi naleznete v tématu Komprese dat.
XML_COMPRESSION
platí pro: SQL Server 2022 (16.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance.
Určuje možnost komprese XML pro všechny xml sloupce datového typu v tabulce. Možnosti jsou následující:
ON
Sloupce používající datový typ xml jsou komprimované.
OFF
Sloupce používající xml datový typ nejsou komprimované.
ON PARTITIONS ( { <partition_number_expression> | <rozsah> } [ ,...n ] )
platí pro: SQL Server 2008 (10.0.x) a novější verze
Určuje oddíly, na které se vztahují nastavení DATA_COMPRESSION nebo XML_COMPRESSION. Pokud tabulka není rozdělená na oddíly, ON PARTITIONS argument vygeneruje chybu.
ON PARTITIONS Pokud klauzule není zadaná, použije se DATA_COMPRESSION možnost nebo XML_COMPRESSION možnost pro všechny oddíly dělené tabulky.
<partition_number_expression> lze zadat následujícími způsoby:
- Zadejte číslo oddílu, například:
ON PARTITIONS (2). - Zadejte čísla oddílů pro několik jednotlivých oddílů oddělených čárkami, například:
ON PARTITIONS (1, 5). - Zadejte rozsahy i jednotlivé oddíly, například:
ON PARTITIONS (2, 4, 6 TO 8).
<range> lze zadat jako čísla oddílů oddělená slovem TO, například: ON PARTITIONS (6 TO 8).
Pokud chcete nastavit různé typy komprese dat pro různé oddíly, zadejte DATA_COMPRESSION možnost více než jednou, například:
--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>
Ve většině případů opětovné sestavení indexu znovu sestaví všechny oddíly děleného indexu. Následující možnosti, pokud se použijí na jeden oddíl, nevybudují všechny oddíly znovu.
SORT_IN_TEMPDBMAXDOPDATA_COMPRESSIONXML_COMPRESSION
low_priority_lock_wait
Platí pro: SQL Server 2014 (12.x) a novější verze
SWITCH Opětovné sestavení indexu nebo online indexu se dokončí, jakmile pro tuto tabulku nejsou žádné blokující operace.
WAIT_AT_LOW_PRIORITY indikuje, že pokud se operace opětovného SWITCH sestavení online indexu nedá dokončit okamžitě, čeká. Operace uchovává zámky s nízkou prioritou, což umožňuje další operace, které blokují zámky v konfliktu s příkazem DDL, pokračovat. Vynechání možnosti WAIT AT LOW PRIORITY odpovídá WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).
MAX_DURATION = čas [ MINUTY ]
Doba čekání (celočíselná hodnota zadaná v minutách), kterou SWITCH musí získat zámek opětovného sestavení indexu nebo online indexu, který se musí získat, čeká při spuštění příkazu DDL. Operace opětovného SWITCH sestavení nebo online indexu se pokusí provést okamžitě. Pokud je operace zablokovaná po MAX_DURATION tuto dobu, provede se jedna z ABORT_AFTER_WAIT akcí.
MAX_DURATION čas je vždy v minutách a slovo MINUTES je možné vynechat.
ABORT_AFTER_WAIT = { NONE | SELF | BLOKÁTORY }
NONE
Pokračuje v operaci opětovného sestavení indexu
SWITCHnebo online beze změny priority zámku (pomocí běžné priority).SELF
Ukončí aktuálně spuštěnou operaci DDL opětovného sestavení indexu
SWITCHnebo online indexu bez provedení jakékoli akce.BLOCKERS
Ukonče všechny uživatelské transakce, které blokují aktuálně operaci DDL opětovného sestavení indexu
SWITCHnebo online indexu, aby operace mohl pokračovat.BLOCKERSALTER ANY CONNECTIONvyžaduje oprávnění.