Dela via


Skapa icke-klustrade index

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-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

  1. I Object Explorer expanderar du databasen som innehåller tabellen där du vill skapa ett icke-grupperat index.

  2. Öppna och expandera mappen Tables.

  3. Högerklicka på tabellen där du vill skapa ett icke-grupperat index och välj Design.

  4. Högerklicka på kolumnen som du vill skapa det icke-klustrade indexet på och välj Index/Nycklar.

  5. I dialogrutan Index/nycklar väljer du Lägg till.

  6. Välj det nya indexet i textrutan Vald primär/Unik nyckel eller Index.

  7. I rutnätet väljer du Skapa som klustradoch väljer Nej från listrutan till höger om egenskapen.

  8. Välj Stäng.

  9. På menyn Arkiv väljer du Sparatable_name.

Så här skapar du ett icke-klustrat index med hjälp av Object Explorer

  1. I Object Explorer expanderar du databasen som innehåller tabellen där du vill skapa ett icke-grupperat index.

  2. Öppna mappen Tables.

  3. Expandera tabellen där du vill skapa ett icke-grupperat index.

  4. Högerklicka på mappen Index, peka på Nytt indexoch välj icke-klustrat index....

  5. I dialogrutan Nytt index på sidan Allmänt anger du namnet på det nya indexet i rutan Indexnamn.

  6. Under indexnyckelkolumnerväljer du Lägg till....

  7. 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.

  8. Välj OK.

  9. 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

  1. I Object Exploreransluter du till en instans av databasmotorn med AdventureWorks2022 installerat. Du kan ladda ned AdventureWorks2022 från exempeldatabaser.

  2. I standardfältet väljer du Ny fråga.

  3. 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