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


Fürtözött index létrehozása

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

Fürtözött indexeket az SQL Server Management Studio vagy a Transact-SQL használatával hozhat létre táblákon. Néhány kivételtől eltekintve minden táblának fürtözött indexszel kell rendelkeznie. A lekérdezési teljesítmény javítása mellett a fürtözött indexek igény szerint újraépíthetők vagy átrendezhetők a táblák töredezettségének szabályozása érdekében. Klaszterezett index is létrehozható nézeten. (A klaszterezett indexeket a cikkben klaszterezett és nem klaszterezett indexek.)

Tipikus implementációk

A fürtözött indexek a következő módokon implementálhatók:

  • PRIMARY KEY és UNIQUE korlátozások**

    Ha PRIMARY KEY kényszert hoz létre, a rendszer automatikusan létrehoz egy egyedi fürtözött indexet az oszlopon vagy oszlopokon, ha a táblában még nem létezik fürtözött index, és nem ad meg egyedi nem-fürtözött indexet. Az elsődleges kulcs oszlopa nem engedélyezi NULL értékeket.

    Ha létrehoz egy UNIQUE kényszert, akkor a rendszer alapértelmezés szerint létrehoz egy egyedi nem-klaszteres indexet, amely biztosítja a UNIQUE kényszert. Egyedi fürtözött indexet is megadhat, ha még nem létezik fürtözött index a táblában.

    A kényszer részeként létrehozott indexek automatikusan ugyanazt a nevet kapják, mint a kényszer neve. További információ: Elsődleges és idegenkulcs-megkötések , egyedi kényszerek és ellenőrzési kényszerek.

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

    Az elsődleges kulcs oszloptól eltérő oszlopban fürtözött indexet is létrehozhat, ha nem kizárólagos elsődleges kulcsra vonatkozó korlátozást adott meg.

Limitations

  • Fürtözött indexstruktúra létrehozásakor lemezterületre van szükség a régi (forrás) és az új (cél)struktúrák számára a megfelelő fájlokban és fájlcsoportokban. A régi struktúra csak a teljes tranzakció véglegesítésével lesz felszabadítva. A rendezéshez további ideiglenes lemezterületre is szükség lehet. További információ: Lemezterület követelményei az Index DDL-műveletek.

  • Amikor egy fürtözött indexet hozunk létre egy halomra, amely több meglévő nem fürtözött indexet tartalmaz, az összes nem fürtözött indexet újra kell építeni, hogy azok a sorazonosító (RID) helyett a fürtözési kulcs értékét tartalmazzák. Hasonlóképpen, ha egy fürtözött index eldobásra kerül egy olyan tábláról, amely több nem fürtözött indexet tartalmaz, a nem fürtözött indexek mind újraépülnek a DROP művelet részeként. Ez a folyamat jelentős időt vehet igénybe nagy táblákon.

    Az indexek nagy méretű táblákon történő létrehozásának előnyös módja, hogy először a klaszterezett indexet hozzuk létre, majd a nem klaszterezett indexeket. Fontolja meg a ONLINE beállítás beállítását ON , amikor indexeket hoz létre a meglévő táblákon. Ha be van ONállítva, a rendszer nem tartja meg a hosszú távú táblazárolásokat. Ez lehetővé teszi a mögöttes tábla lekérdezéseinek vagy frissítéseinek folytatását. További információ: Indexműveletek online végrehajtása.

  • A fürtözött index indexkulcsa nem tartalmazhat varchar oszlopokat, amelyek a ROW_OVERFLOW_DATA foglalási egységben már létező adatokkal rendelkeznek. Ha fürtözött indexet hoz létre egy varchar oszlopban, és a meglévő adatok a IN_ROW_DATA foglalási egységben találhatók, a soron kívüli adatokat letöltő oszlop későbbi beszúrási vagy frissítési műveletei meghiúsulnak. A sorátfolyási adatokat tartalmazó táblákkal kapcsolatos információk beszerzéséhez használja a sys.dm_db_index_physical_stats (Transact-SQL) dinamikus felügyeleti függvényt.

Permissions

A táblához vagy nézethez ALTER engedély szükséges. 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

Fürtözött index létrehozása az Object Explorerből

  1. Az Object Explorerben bontsa ki azt a táblát, amelyen klaszterezett indexet szeretne létrehozni.

  2. Kattintson a jobb egérgombbal az Indexek mappára, mutasson az Új indexlehetőségre, és válassza a Fürtözött index...lehetőséget.

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

  4. Az indexkulcsok alatt válassza a Hozzáadás....

  5. A Oszlopok kijelölésetable_name párbeszédpanelen jelölje be a fürtözött indexhez hozzáadni kívánt táblázatoszlop jelölőnégyzetét.

  6. Kattintson az OK gombra.

  7. Az Új index párbeszédpanelen válassza OKlehetőséget.

Fürtözött index létrehozása a Tábla Tervező használatával

  1. Az Object Explorerben bontsa ki azt az adatbázist, amelyen fürtözött indexet tartalmazó táblát szeretne létrehozni.

  2. Kattintson a jobb gombbal a Táblák mappára, és válassza Új tábla...lehetőséget.

  3. Hozzon létre egy új táblát a szokásos módon. További információ: Táblák létrehozása (adatbázismotor).

  4. Kattintson a jobb gombbal a korábban létrehozott új táblára, és válassza Tervezéslehetőséget.

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

  6. Az Indexek/Kulcsok párbeszédpanelen válassza a Hozzáadáslehetőséget.

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

  8. A rácson válassza a Létrehozás fürtözöttként lehetőséget, majd a tulajdonságtól jobbra található legördülő listából válassza az Igen lehetőséget.

  9. Válassza a Bezárás lehetőséget.

  10. A Fájl menüben válassza a(z) Mentéstable_nameválasztási lehetőséget.

Használd a Transact-SQL-t

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

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

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

    USE AdventureWorks2022;
    GO
    
    -- Create a new table with three columns.
    CREATE TABLE dbo.TestTable (
        TestCol1 INT NOT NULL,
        TestCol2 NCHAR(10) NULL,
        TestCol3 NVARCHAR(50) NULL
    );
    GO
    
    -- Create a clustered index called IX_TestTable_TestCol1
    -- on the dbo.TestTable table using the TestCol1 column.
    CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1);
    GO
    

További információ: INDEX LÉTREHOZÁSA.