Delen via


Niet-geclusterde indexen maken

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

U kunt niet-geclusterde indexen maken in SQL Server met behulp van SQL Server Management Studio of Transact-SQL. Een niet-geclusterde index is een indexstructuur die gescheiden is van de gegevens die zijn opgeslagen in een tabel waarin een of meer geselecteerde kolommen opnieuw worden gerangschikt. Niet-geclusterde indexen kunnen u vaak sneller gegevens vinden dan het doorzoeken van de onderliggende tabel; query's kunnen soms volledig worden beantwoord door de gegevens in de niet-geclusterde index, of de niet-geclusterde index kan de database-engine naar de rijen in de onderliggende tabel verwijzen. Over het algemeen worden niet-geclusterde indexen gemaakt om de prestaties van veelgebruikte query's te verbeteren die niet onder de geclusterde index vallen of om rijen in een tabel te zoeken zonder een geclusterde index (een heap genoemd). U kunt meerdere niet-geclusterde indexen maken in een tabel of geïndexeerde weergave.

Voordat u begint

Typische implementaties

Niet-geclusterde indexen worden op de volgende manieren geïmplementeerd:

  • UNIEKE beperkingen

    Wanneer u een UNIEKE beperking maakt, wordt er een unieke niet-geclusterde index gemaakt om standaard een UNIEKE beperking af te dwingen. U kunt een unieke geclusterde index opgeven als er nog geen geclusterde index in de tabel bestaat. Voor meer informatie, zie Unieke Beperkingen en Controlebeperkingen.

  • Index onafhankelijk van een beperking

    Standaard wordt een niet-geclusterde index gemaakt als geclusterd niet is opgegeven. Het maximum aantal niet-geclusterde indexen dat per tabel kan worden gemaakt, is 999. Dit omvat alle indexen die zijn gemaakt door PRIMAIRE SLEUTEL of UNIEKE beperkingen, maar geen XML-indexen.

  • niet-geclusterde index in een geïndexeerde weergave

    Nadat een unieke geclusterde index is gemaakt in een weergave, kunnen niet-geclusterde indexen worden gemaakt. Voor meer informatie, zie Geïndexeerde weergaven maken.

Veiligheid

Machtigingen

Vereist ALTER-machtigingen voor de tabel of weergave. De gebruiker moet lid zijn van de sysadmin vaste serverfunctie of de db_ddladmin en db_owner vaste databaserollen.

SQL Server Management Studio gebruiken

Een niet-geclusterde index maken met de ontwerpfunctie voor tabellen

  1. Vouw in Objectverkenner de database uit die de tabel bevat waarop u een niet-geclusterde index wilt maken.

  2. Vouw de map Tabellen uit.

  3. Klik met de rechtermuisknop op de tabel waarop u een niet-geclusterde index wilt maken en selecteer Ontwerp.

  4. Klik met de rechtermuisknop op de kolom waarop u de niet-geclusterde index wilt maken en selecteer Indexen/Sleutels.

  5. Selecteer in het dialoogvenster Indexen/SleutelsToevoegen.

  6. Selecteer de nieuwe index in het tekstvak Geselecteerde primaire/unieke sleutel of index.

  7. Selecteer in het raster Aanmaken als geclusterdeen selecteer Geen in de vervolgkeuzelijst rechts van de eigenschap.

  8. Selecteer sluiten.

  9. Selecteer in het menu Bestand de optie Opslaantable_name.

Een niet-geclusterde index maken met behulp van Objectverkenner

  1. Vouw in Objectverkenner de database uit die de tabel bevat waarop u een niet-geclusterde index wilt maken.

  2. Vouw de map Tabellen uit.

  3. Vouw de tabel uit waarop u een niet-geclusterde index wilt maken.

  4. Klik met de rechtermuisknop op de map Indexen, wijs Nieuwe indexaan en selecteer niet-geclusterde index....

  5. Voer in het dialoogvenster Nieuwe index op de pagina Algemeen de naam van de nieuwe index in het vak Indexnaam.

  6. Selecteer onder IndexsleutelkolommenToevoegen....

  7. Schakel in het dialoogvenster Kolommen selecteren intable_name het selectievakje of selectievakjes in van de tabelkolom of -kolommen die moeten worden toegevoegd aan de niet-geclusterde index.

  8. Selecteer OK-.

  9. Selecteer in het dialoogvenster Nieuwe index op OK.

Transact-SQL gebruiken

Een niet-geclusterde index maken in een tabel met behulp van Transact-SQL

  1. Maak in Objectverkennerverbinding met een exemplaar van Database Engine waarop AdventureWorks2022 is geïnstalleerd. U kunt AdventureWorks2022 downloaden van de voorbeelddatabases .

  2. Selecteer op de standaardbalk Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren.

    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