Skapa icke-klustrade index
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Du kan skapa icke-klustrade index i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Ett icke-grupperat index är en indexstruktur som är separat från de data som lagras i en tabell som ordnar om en eller flera valda kolumner. Icke-illustrerade index kan ofta hjälpa dig att hitta data snabbare än att söka i den underliggande tabellen. frågor kan ibland besvaras helt av data i det icke-illustrerade indexet, eller så kan det icke-illustrerade indexet peka databasmotorn mot raderna i den underliggande tabellen. I allmänhet skapas icke-grupperade index för att förbättra prestandan för vanliga frågor som inte omfattas av det klustrade indexet eller för att hitta rader i en tabell utan ett klustrade index (kallas en heap). Du kan skapa flera icke-klustrade index i en tabell eller indexerad vy.
Innan du börjar
Typiska implementeringar
Icke-grupperade index implementeras på följande sätt:
UNIKA begränsningar
När du skapar en UNIK begränsning skapas ett unikt icke-grupperat index för att framtvinga en UNIK begränsning som standard. Du kan ange ett unikt grupperat index om det inte redan finns ett grupperat index i tabellen. Mer information finns i unika begränsningar och kontrollbegränsningar.
Index oberoende av en begränsning
Som standard skapas ett icke-grupperat index om klustrat inte har angetts. Det maximala antalet icke-grupperade index som kan skapas per tabell är 999. Detta inkluderar index som skapats av PRIMÄRNYCKEL eller UNIKA begränsningar, men innehåller inte XML-index.
Icke-grupperat index i en indexerad vy
När ett unikt grupperat index har skapats i en vy kan icke-grupperade index skapas. Mer information finns i Skapa indexerade vyer.
Säkerhet
Behörigheter
Kräver ALTER-behörighet på tabellen eller vyn. Användaren måste vara medlem i sysadmin fast serverroll eller db_ddladmin och db_owner fasta databasroller.
Använda SQL Server Management Studio
Så här skapar du ett icke-grupperat index med hjälp av Tabelldesignern
I Object Explorer expanderar du databasen som innehåller tabellen där du vill skapa ett icke-grupperat index.
Öppna och expandera mappen Tables.
Högerklicka på tabellen där du vill skapa ett icke-grupperat index och välj Design.
Högerklicka på kolumnen som du vill skapa det icke-klustrade indexet på och välj Index/Nycklar.
I dialogrutan Index/nycklar väljer du Lägg till.
Välj det nya indexet i textrutan Vald primär/Unik nyckel eller Index.
I rutnätet väljer du Skapa som klustradoch väljer Nej från listrutan till höger om egenskapen.
Välj Stäng.
På menyn Arkiv väljer du Sparatable_name.
Så här skapar du ett icke-klustrat index med hjälp av Object Explorer
I Object Explorer expanderar du databasen som innehåller tabellen där du vill skapa ett icke-grupperat index.
Öppna mappen Tables.
Expandera tabellen där du vill skapa ett icke-grupperat index.
Högerklicka på mappen Index, peka på Nytt indexoch välj icke-klustrat index....
I dialogrutan Nytt index på sidan Allmänt anger du namnet på det nya indexet i rutan Indexnamn.
Under indexnyckelkolumnerväljer du Lägg till....
I dialogrutan Välj kolumner fråntable_name markerar du kryssrutan eller kryssrutorna i tabellkolumnen eller kolumnerna som ska läggas till i det icke-grupperade indexet.
Välj OK.
I dialogrutan Nytt index väljer du OK.
Använda Transact-SQL
Skapa ett icke-grupperat index i en tabell med hjälp av Transact-SQL
I Object Exploreransluter du till en instans av databasmotorn med
AdventureWorks2022
installerat. Du kan ladda nedAdventureWorks2022
från exempeldatabaser.I standardfältet väljer du Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och välj Kör.
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