Megosztás a következőn keresztül:


Egyedi index létrehozása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a témakör azt ismerteti, hogyan hozhat létre egyedi indexet egy táblán az SQL Serveren az SQL Server Management Studio vagy a Transact-SQL használatával. Az egyedi index garantálja, hogy az indexkulcs nem tartalmaz ismétlődő értékeket, ezért a tábla minden sora valamilyen módon egyedi. Nincs jelentős különbség az EGYEDI kényszer létrehozása és a korlátozástól független egyedi index létrehozása között. Az adatérvényesítés ugyanúgy történik, és a lekérdezésoptimalizáló nem tesz különbséget a kényszer által létrehozott vagy manuálisan létrehozott egyedi indexek között. Az egyedi kényszer létrehozása az oszlopon világossá teszi az index célját. Az EGYEDI korlátozásokról további információt az Egyedi korlátozások és a Korlátozások ellenőrzésecímű témakörben talál.

Egyedi index létrehozásakor beállíthatja, hogy figyelmen kívül hagyja az ismétlődő kulcsokat. Ha ez a beállítás Igen értékre van állítva, és ismétlődő kulcsokat próbál létrehozni több sort érintő adatok hozzáadásával (az INSERT utasítással), akkor az ismétlődést tartalmazó sor nem lesz hozzáadva. Ha Nincsértékre van állítva, a teljes beszúrási művelet meghiúsul, és az összes adat vissza lesz állítva.

Note

Egyetlen oszlopban nem hozhat létre egyedi indexet, ha az oszlop több sorban tartalmaz NULL értéket. Hasonlóképpen nem hozhat létre egyedi indexet több oszlopon, ha az oszlopok kombinációja több sorban tartalmaz NULL értéket. Ezeket az indexelés céljából ismétlődő értékekként kezeli a rendszer.

ebben a témakörben

Mielőtt hozzákezdene

Az egyedi index előnyei

  • A többoszlopos egyedi indexek garantálják, hogy az indexkulcs értékeinek minden kombinációja egyedi legyen. Ha például LastName, FirstNameés MiddleName oszlopok kombinációján hoz létre egyedi indexet, a tábla egyetlen sora sem rendelkezhet azonos értékkombinációval ezekhez az oszlopokhoz.

  • Feltéve, hogy az egyes oszlopok adatai egyediek, létrehozhat egy egyedi fürtözött indexet és több egyedi nem fürtözött indexet azonos táblán.

  • Az egyedi indexek biztosítják a definiált oszlopok adatintegritását.

  • Az egyedi indexek további információkat nyújtanak a lekérdezésoptimalizáló számára, amelyek hatékonyabb végrehajtási terveket hozhatnak létre.

Tipikus implementációk

Az egyedi indexek a következő módokon implementálódnak:

  • ELSŐDLEGES KULCS vagy EGYEDI korlátozás

    ELSŐDLEGES KULCS kényszer létrehozásakor a rendszer automatikusan létrehoz egy egyedi klaszterezett indexet az oszlopon vagy oszlopokon, ha a táblában még nem létezik klaszterezett index, és nem ad meg egyedi, nem kluszterezett indexet. Az elsődleges kulcs oszlopa nem engedélyezi a NULL értékeket.

    Amikor egy UNIQUE kényszert hoz létre, a rendszer automatikusan létrehoz egy egyedi nonclustered indexet, hogy érvényesítse a UNIQUE kényszert. Ha a táblában még nem létezik fürtözött index, akkor megadhat egy egyedi fürtözött indexet.

    További információért lásd: Egyedi korlátozások és ellenőrzési korlátozások, valamint az Elsődleges és idegen kulcs korlátozások.

  • index korlátozástól független

    Egy táblában több egyedi, nem kizárólagos index is definiálható.

    További információ: CREATE INDEX (Transact-SQL).

  • Indexelt nézet

    Indexelt nézet létrehozásához egy egyedi fürtözött index van definiálva egy vagy több nézetoszlopon. A rendszer végrehajtja a nézetet, és az eredményhalmaz az index levélszintjén lesz tárolva ugyanúgy, mint a táblaadatok fürtözött indexben való tárolása. További információ: Indexelt nézetek létrehozása.

Korlátozások és korlátozások

  • Egyedi index, EGYEDI kényszer vagy ELSŐDLEGES KULCS kényszer nem hozható létre, ha ismétlődő kulcsértékek találhatók az adatokban.

  • Az egyedi nem klaszteres indexek tartalmazhatnak nem kulcsként megadott oszlopokat is. A további információkért tekintse meg a Belefoglalt oszlopokkal létrehozott indexet.

Biztonság

Permissions

Szükség van ALTER engedélyre a táblán vagy nézeten. A felhasználónak tagja kell lennie a sysadmin rögzített kiszolgálói szerepkörnek, illetve a db_ddladmin és db_owner rögzített adatbázis-szerepköröknek.

Az SQL Server Management Studio használata

Egyedi index létrehozása a Táblatervezővel

  1. Az Object Explorerben bontsa ki azt az adatbázist, amely azt a táblát tartalmazza, amelyen egyedi indexet szeretne létrehozni.

  2. Nyissa meg a Táblák mappát.

  3. Kattintson a jobb gombbal arra a táblára, amelyen egyedi indexet szeretne létrehozni, és válassza a Tervezéslehetőséget.

  4. A Táblatervező menüben válassza Indexek/Kulcsoklehetőséget.

  5. Az Indexek/Kulcsok párbeszédpanelen kattintson a Hozzáadásgombra.

  6. Jelölje ki az új indexet a Kijelölt elsődleges/egyedi kulcs vagy Index szövegmezőben.

  7. A főrácson az (Általános)alatt válassza a Típus lehetőséget, majd válassza Index a listából.

  8. Válassza az oszlopokat, majd kattintson a három pontra (...).

  9. Az Indexoszlopok párbeszédpanel Oszlopnévterületén jelölje ki az indexelni kívánt oszlopokat. Legfeljebb 16 oszlopot jelölhet ki. Az optimális teljesítmény érdekében indexenként csak egy vagy két oszlopot jelöljön ki. Minden kiválasztott oszlop esetében adja meg, hogy az index növekvő vagy csökkenő sorrendbe rendezi-e az oszlop értékeit.

  10. Ha az index összes oszlopa ki van jelölve, kattintson OKgombra.

  11. A rácson az (Általános)területen válassza az Egyedi lehetőséget, majd válassza Igen lehetőséget a listából.

  12. Nem kötelező: A főrácsban a Táblatervezőalatt válassza az Ismétlődő kulcsok figyelmen kívül hagyása lehetőséget, majd a listából az Igen lehetőséget. Ezt akkor tegye, ha figyelmen kívül szeretné hagyni azokat az adatokat, amelyek duplikált kulcsot hoznak létre az egyedi indexben.

  13. Kattintson a Bezárás gombra.

  14. A Fájl menüpontjában kattintson a Mentéstable_namegombra.

Egyedi index létrehozása az Object Explorer használatával

  1. Az Object Explorerben bontsa ki azt az adatbázist, amely azt a táblát tartalmazza, amelyen egyedi indexet szeretne létrehozni.

  2. Nyissa meg a Táblák mappát.

  3. Bontsa ki azt a táblát, amelyen egyedi indexet szeretne létrehozni.

  4. Jobb gombbal kattintson az Indexek mappára, mutasson a Új indexelemre, és válassza a nem klaszterezett index...lehetőséget.

  5. Az Új index párbeszédpanel Általános lapján adja meg az új index nevét az Index neve mezőben.

  6. Jelölje be az Egyedi jelölőnégyzetet.

  7. Az indexkulcs oszlopokcsoportjában kattintson a Hozzáadás....

  8. Az Oszlopok kijelölésetable_name párbeszédpanelen jelölje be az egyedi indexhez hozzáadni kívánt táblázatoszlop vagy oszlopok jelölőnégyzetét vagy jelölőnégyzeteit.

  9. Kattintson az OK gombra.

  10. Az Új index párbeszédpanelen kattintson az OKgombra.

Transact-SQL használata

Egyedi index létrehozása táblán

  1. Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.

  2. A Standard sávon kattintson Új lekérdezéselemre.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és kattintson a Végrehajtásgombra.

    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  
    

További információ: CREATE INDEX (Transact-SQL).