Az index segítségével az SQL Server gyorsan lekérheti az adatokat a sorokból. Az indexek úgy működnek, mint a tartalomjegyzék a könyvek elején, lehetővé téve, hogy gyorsan megkeresse a téma oldalát. Indexek nélkül az SQL Servernek meg kell vizsgálnia a táblázat összes sorát, hogy megtalálja a rekordot.
Az SQL Serverben kétféle index létezik: fürtözött és nem fürtözött. Tudja meg, mi a különbség a fürtözött és a nem fürtözött indexek között, és miért fontosak.
Fürtözött index az SQL Serverben
A fürtözött indexben az adatsorok fizikailag, a kulcsérték alapján rendezett módon tárolódnak. Mivel az index tartalmazza a táblát, és csak egy sorrendbe tudja rendezni a sorokat, táblánként csak egy fürtözött indexet hozhat létre.
Míg az indexek gyorsabbá teszik egy tartomány sorainak lekérését, INSERT és UPDATE utasítások lassú lehet, mert a lekérdezésoptimalizáló sorrendben ellenőrzi az indexet, amíg meg nem találja a célindexet.
Nem fürtözött index az SQL Serverben
A nem fürtözött index azokat a kulcsértékeket tartalmazza, amelyek bejegyzése egy sorkeresőnek nevezett mutató. Fürtözött táblák (fürtözött indexszel rendelkező táblák) esetén a mutató a fürtözött indexben lévő kulcsra mutat, amely viszont a tábla sorára mutat. A fürtözött index nélküli sorok esetében a mutató közvetlenül a táblázat sorára mutat.
Fürtözött index létrehozása az SQL Serverben
Amikor létrehoz egy táblát egy elsődleges kulccsal, az SQL Server automatikusan létrehoz egy fürtözött indexkulcsot az elsődleges kulcs alapján. Ha nincs elsődleges kulcsa, a következő utasítás végrehajtásával fürtözött indexkulcsot hozhat létre.
TEREMT FÜRTÖZÖTT INDEX <indexnév>
AZ ASZTALON <táblázat_neve>(oszlop_neve)
Ebben az utasításban megadja az index nevét, a létrehozandó tábla nevét, valamint az indexben használandó oszlop nevét.
Ha olyan táblához ad hozzá egy elsődleges kulcsot, amely már rendelkezik fürtözött indexszel, az SQL Server egy nem fürtözött indexet hoz létre vele.
Ha olyan fürtözött indexet szeretne létrehozni, amely nem tartalmazza az elsődleges kulcs oszlopát, először el kell dobnia az elsődleges kulcs megkötését.
HASZNÁLATadatbázis név
VÁLTOZTATASZTAL táblázat_neve
CSEPPKÉNYSZER pk_name
MEGY
Az elsődleges kulcs megszorításainak eltávolítása a fürtözött indexet is eltávolítja, így egyéni indexet hozhat létre.
Nem fürtözött index létrehozása az SQL Serverben
Nem fürtözött index létrehozásához használja a következő utasítást.
TEREMTINDEX <indexnév>
AZ ASZTALON <táblázat_neve>(oszlop_neve)
Használhatja a NONCLUSTERED kulcsszót is:
TEREMT [NEM CSOPORTOS] INDEX <indexnév>
AZ ASZTALON <táblázat_neve>(oszlop_neve)
Ez az utasítás egy nem fürtözött indexet hoz létre a megadott táblázatban, és tartalmazza a megadott oszlopot.
Ha szeretné, az oszlopokat növekvő (ASC) vagy csökkenő (DESC) sorrendbe rendezheti.
TEREMT [NEM CSOPORTOS] INDEX <indexnév>
AZ ASZTALON <táblázat_neve>(oszlop_neve ASC/DESC)
Melyik indexet érdemes választani?
Mind a fürtözött, mind a nem fürtözött indexek javítják a lekérdezési időt. Ha a legtöbb lekérdezés SELECT művelet a táblázat több oszlopában, akkor a fürtözött indexek gyorsabbak. Az INSERT vagy UPDATE műveleteknél azonban a nem fürtözött indexek gyorsabbak, mivel a lekérdezésoptimalizáló közvetlenül az indexből tudja megkeresni az oszlopot.
Amint látja, ezek az indexek működnek a legjobban különböző SQL lekérdezések. A legtöbb SQL-adatbázisnak ezért előnyös lesz legalább egy fürtözött indexe és nem fürtözött indexe a rendszeresen frissített oszlopokhoz.
Az indexek jelentősége az SQL Serverben
A fürtözött és nem fürtözött indexek nagyobb lekérdezési teljesítményt eredményeznek. Lekérdezés futtatásakor a lekérdezésoptimalizáló megvizsgálja az indexet egy sor tárolási helyére, majd lekéri az információkat arról a helyről. Ez sokkal gyorsabb, mint a táblázat összes sorának beolvasása.
Használhat nem fürtözött indexeket is a könyvjelzőkeresési holtpontok feloldására, ha létrehoz egy nem fürtözött indexet azokhoz az oszlopokhoz, amelyekhez a lekérdezések hozzáfértek.