Vytváření neclusterovaných indexů
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
SQL Database v Microsoft Fabric
V SQL Serveru můžete vytvářet neclusterované indexy pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL. Neclusterovaný index je struktura indexu oddělená od dat uložených v tabulce, která změní pořadí jednoho nebo více vybraných sloupců. Neclusterované indexy vám často pomůžou rychleji najít data než vyhledávání v podkladové tabulce; Dotazy mohou být někdy zcela zodpovězeny daty v neclusterovém indexu nebo neclusterovaný index může odkazovat databázový stroj na řádky v podkladové tabulce. Obecně platí, že neclusterované indexy se vytvářejí za účelem zlepšení výkonu často používaných dotazů, které nejsou pokryty clusterovaným indexem, nebo k vyhledání řádků v tabulce bez clusterovaného indexu (označovaného jako halda). V tabulce nebo indexovém zobrazení můžete vytvořit více neclusterovaných indexů.
Než začnete
Typické implementace
Neclusterované indexy se implementují následujícími způsoby:
omezení UNIQUE
Když vytvoříte omezení UNIQUE, vytvoří se jedinečný neclusterovaný index, který ve výchozím nastavení vynucuje omezení UNIQUE. Jedinečný clusterovaný index můžete zadat, pokud clusterovaný index v tabulce ještě neexistuje. Další informace najdete v tématu Jedinečná omezení a kontrolní omezení.
Index nezávislý na omezení
Ve výchozím nastavení se vytvoří neclusterovaný index, pokud není zadaný cluster. Maximální počet neclusterovaných indexů, které lze vytvořit pro každou tabulku, je 999. To zahrnuje všechny indexy vytvořené omezením PRIMÁRNÍ KLÍČ nebo JEDINEČNÉ, ale nezahrnuje indexy XML.
neklastrový index na indexovaném zobrazení
Po vytvoření jedinečného clusterovaného indexu v zobrazení je možné vytvořit neclusterované indexy. Další informace najdete v tématu Vytvoření indexovaných zobrazení.
Bezpečnost
Dovolení
Vyžaduje oprávnění ALTER v tabulce nebo zobrazení. Uživatel musí být členem pevné serverové role sysadmin nebo pevné databázové role db_ddladmin a db_owner.
Použití aplikace SQL Server Management Studio
Vytvoření neclusterovaného indexu pomocí Návrháře tabulek
V Průzkumníku objektů rozbalte databázi obsahující tabulku, na které chcete vytvořit neclusterovaný index.
Rozbalte složku Tabulky.
Pravým tlačítkem myši klikněte na tabulku, na které chcete vytvořit neclusterovaný index, a vyberte Návrh.
Klikněte pravým tlačítkem myši na sloupec, u kterého chcete vytvořit neklastrovaný index, a vyberte Indexy/Klíče.
V dialogovém okně Indexy/klíče vyberte Přidat.
Vyberte nový index v textovém poli Vybraný primární/jedinečný klíč nebo index.
V mřížce vyberte Vytvořit jako seskupenýa z rozevíracího seznamu napravo od vlastnosti zvolte Ne.
Vyberte Zavřít.
V nabídce Soubor zvolte Uložittable_name.
Vytvoření neclusterovaného indexu pomocí Průzkumníka objektů
V Průzkumníku objektů rozbalte databázi obsahující tabulku, na které chcete vytvořit neclusterovaný index.
Rozbalte složku Tabulky.
Rozbalte tabulku, na které chcete vytvořit neclusterovaný index.
Klikněte pravým tlačítkem na složku Indexy, přejděte na Nový indexa vyberte Neskupený index....
V dialogovém okně Nový index zadejte na stránce Obecné název nového indexu do pole Název indexu.
V části Sloupce klíče indexuvyberte Přidat....
V dialogovém okně Vybrat sloupce ztable_name zaškrtněte políčko nebo políčka sloupečků tabulky, které chcete přidat do neklastrovaného indexu.
Vyberte OK.
V dialogovém okně Nový index vyberte OK.
Použití Transact-SQL
Vytvoření neclusterovaného indexu v tabulce pomocí Transact-SQL
V Průzkumník objektůse připojte k instanci stroje Database Engine, na kterém je nainstalován
AdventureWorks2022
.AdventureWorks2022
si můžete stáhnout z ukázkových databází .Na panelu Standard vyberte Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit.
USE AdventureWorks2022; GO -- Find an existing index named IX_ProductVendor_VendorID and delete it if found. IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ProductVendor_VendorID') DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor; GO -- Create a nonclustered index called IX_ProductVendor_VendorID -- on the Purchasing.ProductVendor table using the BusinessEntityID column. CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID); GO
Související obsah
- VYTVOŘIT INDEX (Transact-SQL)
- Průvodce návrhem a architekturou indexu pro SQL Server a Azure SQL