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 Managed Instance
Znovu sestaví jeden nebo více indexů pro tabulku v zadané databázi.
Důležitý
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Místo toho použijte ALTER INDEX.
platí pro: SQL Server 2008 (10.0.x) a novější verze.
Syntax
DBCC DBREINDEX
(
table_name
[ , index_name [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
Argumenty
table_name
Název tabulky obsahující zadaný index nebo indexy, které se mají znovu sestavit. Názvy tabulek musí dodržovat pravidla pro identifikátory .
index_name
Název indexu, který se má znovu sestavit. Názvy indexů musí splňovat pravidla pro identifikátory. Je-li zadán index_name, je nutné zadat table_name. Pokud index_name není zadán nebo je ' ', všechny indexy tabulky se znovu sestaví.
fillfactor
Procento místa na každé stránce indexu pro ukládání dat při vytvoření nebo vytvoření indexu. fillfactor nahradí faktor výplně při vytvoření indexu, stane se novým výchozím nastavením indexu a pro všechny ostatní neclusterované indexy znovu sestavené, protože clusterovaný index se znovu sestaví.
Pokud fillfactor je 0, DBCC DBREINDEX použije hodnotu vyplnit jako poslední zadanou pro index. Tato hodnota je uložena v zobrazení katalogu sys.indexes.
Pokud je zadán fillfactor, je nutné zadat table_name a index_name. Pokud fillfactor není zadaný, použije se výchozí faktor výplně 100. Další informace najdete v tématu Určení faktoru vyplnění indexu.
S NO_INFOMSGS
Potlačí všechny informační zprávy, které mají úrovně závažnosti od 0 do 10.
Poznámky
DBCC DBREINDEX znovu sestaví index pro tabulku nebo všechny indexy definované pro tabulku. Díky dynamickému opětovnému vytvoření indexu je možné znovu vytvořit indexy, které vynucují omezení PRIMÁRNÍ KLÍČ nebo JEDINEČNÉ, aniž by bylo nutné tato omezení vyřadit a znovu vytvořit. To znamená, že index lze znovu vytvořit bez znalosti struktury tabulky nebo jejích omezení. K tomu může dojít po hromadné kopii dat do tabulky.
DBCC DBREINDEX může znovu sestavit všechny indexy tabulky v jednom příkazu. To je jednodušší než kódování více DROP INDEX a CREATE INDEX příkazů. Vzhledem k tomu, že práce je provedena jedním příkazem, DBCC DBREINDEX je automaticky atomická, zatímco jednotlivé DROP INDEX a CREATE INDEX příkazy musí být zahrnuty do transakce, aby byla atomická.
DBCC DBREINDEX také nabízí více optimalizací než jednotlivé DROP INDEX a CREATE INDEX příkazy.
Na rozdíl od DBCC INDEXDEFRAGnebo ALTER INDEX s možností REORGANIZE je DBCC DBREINDEX offline operací. Pokud se neclusterovaný index znovu sestaví, v příslušné tabulce se během operace uchovává sdílený zámek. Tím se zabrání úpravám tabulky. Pokud se clusterovaný index znovu sestaví, bude se uchovávat exkluzivní zámek tabulky. Tím zabráníte všem přístupům k tabulce, takže je tabulka offline. Pokud chcete provést opětovné sestavení indexu online nebo řídit stupeň paralelismu během operace opětovného sestavení indexu, použijte příkaz ALTER INDEX REBUILD s možností ONLINE.
Další informace o výběru metody pro opětovné sestavení nebo změna uspořádání indexu naleznete v tématu Změna uspořádání a opětovného sestavení indexů.
Omezení
DBCC DBREINDEX se nepodporuje pro použití u následujících objektů:
- Systémové tabulky
- Prostorové indexy
- indexy columnstore optimalizované pro paměť
Sady výsledků
Není-li zadán NO_INFOMSGS (musí být zadán název tabulky), DBCC DBREINDEX vždy vrátí:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Dovolení
Volající musí vlastnit tabulku nebo být členem role správce systému pevné role serveru, db_owner pevné databázové role nebo db_ddladmin pevné databázové role.
Příklady
A. Opětovné sestavení indexu
Následující příklad znovu sestaví Employee_EmployeeID clusterovaný index s vyplněným faktorem 80 v tabulce Employee v databázi AdventureWorks2025.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID, 80);
GO
B. Opětovné sestavení všech indexů
Následující příklad znovu sestaví všechny indexy v tabulce Employee v AdventureWorks2025 pomocí hodnoty faktoru vyplnění 70.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);
GO
Viz také
- ALTER TABLE (Transact-SQL)
- VYTVOŘIT TABULKU (Transact-SQL)
- DBCC (Transact-SQL)
- sys.indexes (Transact-SQL)
- sys.dm_db_index_physical_stats (Transact-SQL)
- ALTER INDEX (Transact-SQL)