Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av 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:
UNIQUEBegränsningar**När du skapar en
UNIQUEbegränsning skapas ett unikt icke-grupperat index för att framtvinga enUNIQUEbegränsning som standard. Du kan ange ett unikt grupperat index om det inte redan finns ett klustrade 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 anges. Det maximala antalet icke-grupperade index som kan skapas per tabell är 999. Detta inkluderar index som skapats av
PRIMARY KEYellerUNIQUEbegrä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.
Security
Permissions
Kräver ALTER behörighet i 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
Skapa 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.
Skapa ett icke-grupperat 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 och expandera 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änd 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
AdventureWorks2022installerat. Du kan ladda nedAdventureWorks2022frå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