Delen via


Een unieke index maken

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

In dit onderwerp wordt beschreven hoe u een unieke index maakt in een tabel in SQL Server met behulp van SQL Server Management Studio of Transact-SQL. Een unieke index garandeert dat de indexsleutel geen dubbele waarden bevat en daarom is elke rij in de tabel op een of andere manier uniek. Er zijn geen belangrijke verschillen tussen het maken van een UNIEKE beperking en het maken van een unieke index die onafhankelijk is van een beperking. Gegevensvalidatie vindt op dezelfde manier plaats en de queryoptimalisatie maakt geen onderscheid tussen een unieke index die is gemaakt door een beperking of handmatig gemaakt. Als u echter een UNIEKE beperking voor de kolom maakt, wordt het doel van de index duidelijk. Voor meer informatie over UNIEKE beperkingen, zie Unieke beperkingen en Controlebeperkingen.

Wanneer u een unieke index maakt, kunt u een optie instellen om dubbele sleutels te negeren. Als deze optie is ingesteld op Ja en u probeert dubbele sleutels te maken door gegevens toe te voegen die van invloed zijn op meerdere rijen (met de instructie INSERT), wordt de rij met een duplicaat niet toegevoegd. Als deze is ingesteld op Geen, mislukt de hele invoegbewerking en worden alle gegevens teruggedraaid.

Notitie

U kunt geen unieke index maken voor één kolom als die kolom NULL in meer dan één rij bevat. Op dezelfde manier kunt u geen unieke index maken voor meerdere kolommen als de combinatie van kolommen NULL in meer dan één rij bevat. Deze worden behandeld als dubbele waarden voor indexeringsdoeleinden.

In Dit Onderwerp

Voordat u begint

Voordelen van een unieke index

  • Unieke indexen met meerdere kolommen garanderen dat elke combinatie van waarden in de indexsleutel uniek is. Als er bijvoorbeeld een unieke index wordt gemaakt op basis van een combinatie van de kolommen LastName, FirstNameen MiddleName, kunnen geen twee rijen in de tabel dezelfde combinatie van waarden voor deze kolommen hebben.

  • Op voorwaarde dat de gegevens in elke kolom uniek zijn, kunt u zowel een unieke geclusterde index als meerdere unieke niet-geclusterde indexen in dezelfde tabel maken.

  • Unieke indexen zorgen voor de gegevensintegriteit van de gedefinieerde kolommen.

  • Unieke indexen bieden aanvullende informatie die nuttig is voor de queryoptimalisatie die efficiëntere uitvoeringsplannen kan produceren.

Typische implementaties

Unieke indexen worden op de volgende manieren geïmplementeerd:

  • PRIMAIRE SLEUTEL of UNIEKE beperking

    Wanneer u een constraint PRIMAIRE SLEUTEL aanmaakt, wordt automatisch een unieke geclusterde index op de kolom of kolommen gemaakt als er nog geen geclusterde index in de tabel bestaat en u geen unieke niet-geclusterde index opgegeven heeft. De primaire-sleutelkolom kan geen NULL-waarden toestaan.

    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.

    Zie voor meer informatie unieke constraints en controlebeperkingen en primaire en vreemde sleutelconstraints.

  • Index onafhankelijk van een beperking

    Er kunnen meerdere unieke niet-geclusterde indexen worden gedefinieerd in een tabel.

    Zie CREATE INDEX (Transact-SQL)voor meer informatie.

  • geïndexeerde weergave

    Als u een geïndexeerde weergave wilt maken, wordt een unieke geclusterde index gedefinieerd in een of meer weergavekolommen. De weergave wordt uitgevoerd en de resultatenset wordt opgeslagen op het bladniveau van de index op dezelfde manier als tabelgegevens worden opgeslagen in een geclusterde index. Voor meer informatie, zie Geïndexeerde weergaven maken.

Beperkingen en beperkingen

  • Er kan geen unieke index, UNIEKE beperking of PRIMAIRE SLEUTELbeperking worden gemaakt als er dubbele sleutelwaarden aanwezig zijn in de gegevens.

  • Een unieke niet-geclusterde index kan niet-sleutelkolommen bevatten. Zie Een index maken met opgenomen kolommenvoor meer informatie.

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 unieke index maken met de ontwerpfunctie voor tabellen

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

  2. Vouw de map Tabellen uit.

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

  4. Selecteer in het Menu Tabelontwerper de opties Indexen/Sleutels.

  5. Klik in het dialoogvenster Indexen/sleutels op toevoegen.

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

  7. Selecteer in het hoofdraster onder (Algemeen)eerst Type en kies vervolgens Index in de lijst.

  8. Selecteer kolommenen klik vervolgens op het beletselteken (...).

  9. Selecteer in het dialoogvenster Kolommen indexeren, onder Kolomnaam, de kolommen die u wilt indexeren. U kunt maximaal 16 kolommen selecteren. Selecteer slechts één of twee kolommen per index voor optimale prestaties. Geef voor elke kolom die u selecteert aan of de index waarden van deze kolom in oplopende of aflopende volgorde rangschikt.

  10. Wanneer alle kolommen voor de index zijn geselecteerd, klikt u op OK.

  11. Selecteer in het raster onder (Algemeen)de optie Is Uniek en kies vervolgens Ja uit de lijst.

  12. Optioneel: Selecteer in het hoofdraster onder TabelontwerperDubbele sleutels negeren en kies vervolgens Ja uit de lijst. Doe dit als u pogingen wilt negeren om gegevens toe te voegen die een dubbele sleutel in de unieke index zouden maken.

  13. Klik op sluiten.

  14. Klik in het menu Bestand op Opslaantable_name.

Een unieke index maken met behulp van Objectverkenner

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

  2. Vouw de map Tabellen uit.

  3. Vouw de tabel uit waarop u een unieke 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 het selectievakje Unique.

  7. Klik onder indexsleutelkolommenop Toevoegen....

  8. In het dialoogvenster Kolommen selecteren intable_name selecteer de selectievakjes van de tabelkolommen die moeten worden toegevoegd aan de unieke index.

  9. Klik op OK-.

  10. Klik op OKin het dialoogvenster Nieuwe index.

Transact-SQL gebruiken

Een unieke index voor een tabel maken

  1. Maak in Objectverkennerverbinding met een instantie van Database Engine.

  2. Klik op de Standaardbalk op Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en klik op uitvoeren.

    USE AdventureWorks2022;  
    GO  
    -- Find an existing index named AK_UnitMeasure_Name 
    -- on the Production.UnitMeasure table and delete it if found. 
    IF EXISTS (SELECT name from sys.indexes  
               WHERE name = N'AK_UnitMeasure_Name'
               AND object_id = OBJECT_ID(N'Production.UnitMeasure', N'U'))   
       DROP INDEX AK_UnitMeasure_Name ON Production.UnitMeasure;   
    GO  
    -- Create a unique index called AK_UnitMeasure_Name  
    -- on the Production.UnitMeasure table using the Name column.  
    CREATE UNIQUE INDEX AK_UnitMeasure_Name   
       ON Production.UnitMeasure (Name);   
    GO  
    

Zie CREATE INDEX (Transact-SQL)voor meer informatie.