Windows - Indexek használata az SQL-ben

SQL indexek 1. rész

Ha adatbázis alapú alkalmazásokat készítünk, elengedhetetlen feladatunk, hogy az optimális teljesítményt szem előtt tartva alakítsuk ki az adatbázis tábláit. Egy adatbázis hatékonyságát nagymértékben növelhetjük, ha indexeket használunk. Új sorozatunk segítségével az indexek világába szeretnénk betekintést nyújtani. Ebben a részben megismerhetjük az indexek használatának és létrehozásának alapjait.
Egy adattáblában az index olyan, mint egy könyvben a tartalomjegyzék. Amikor valamit meg akarunk keresni egy könyvben, megnézhetjük a tartalomjegyzéket, ahonnan kiderül, hogy a számunkra szükséges információt melyik oldalon találjuk meg. Ha a tartalomjegyzékben nem találunk hasznos információt, akkor jöhet a könyv átnézése oldalanként.
Ez a helyzet az indexekkel is. Az index tulajdonképpen egy lista, amely egy adattábla megadott oszlopának vagy oszlopainak értékeit tartalmazza. Az egyes értékek mellett szerepel egy mutató is. A mutatók határozzák meg az adat fizikai helyét a táblában. Az adatok lekérdezésekor nem kell végigpásztáznunk az egész táblát, hiszen az index megadja az adat helyét a táblában.
Az SQL szerver indexek segítségével úgy tudja szervezni az adatok elérését, hogy az a lehető leggyorsabb legyen. Az indexeket a szerver automatikusan használja.
Ha a keresés egy olyan mező értéke, amely szerepel az indexben, akkor a rekord fizikai helyének meghatározása az index segítségével történik. Ha nem létezik index, vagy a keresett érték nem szerepel abban, akkor nem marad más hátra, minthogy a szerver egyesével végignézze az összes adatot.
Az indexek létrehozásának kulcsfontosságú kérdése, hogy mely mezőből vagy mezőkből készítsünk indexeket. A jól kiválasztott indexek használatával sokkal hatékonyabbá tehetjük az adatbázist, de ha nem vagyunk eléggé körültekintőek, akkor a hatás ennek az ellenkezője is lehet.
Amikor kiválasztjuk az indexeket, nem csak a lekérdezéseket kell szem előtt tartanunk, hanem a beszúrásokat, módosításokat és törléseket is. Hatalmas különbség van a lekérdezés és az adatfelvitel között. Az indexek létrehozása során kulcsfontosságú kérdés, hogy a lekérdezés vagy a felvitel van-e túlsúlyban.
A szerver számára a legnagyobb problémát az indexek folyamatos frissítése okozza. Ha az adatbázison végzett műveletek többsége adatfelvitel és módosítás, célszerű az indexek számát minél jobban csökkenteni. Ilyen esetben maximum 5 index használata javallott. Minél több indexet használunk, a szervernek annál több időt kell az indexek frissítésére fordítania.
Ha a lekérdezések vannak túlsúlyban, akkor viszont célszerű minél több indexet használni. Ebben az esetben csak a rendelkezésre álló tárterületet kell mérlegelnünk, hiszen minden egyes újabb index, további helyet foglal.
Amikor megtervezzük a használni kívánt indexeket, gondoljuk végig, hogy milyen lekérdezésekre van szükség. Amikor létrehozunk egy indexet, meg kell adnunk, hogy mely mező vagy mezők tartalma kerüljön bele.
Ha az index egyetlen mezőből készül, akkor egyszerű, ha többől, akkor összetett indexnek nevezzük. Összetett indexet akkor érdemes használni, ha azt akarjuk, hogy az index biztosítsa a rekordok egyediségét. Minden más esetben célszerűbb az egyszerű index használata. Egy adattáblában több indexet is használhatunk.
Ha összetett indexet készítünk, nagyon fontos hogy lekérdezés esetén a SELECT parancs záradékában az index első mezőjének neve is szerepeljen. Ha ez nem teljesül, akkor a lekérdezés nem fogja használni az adott indexet.
Ennek megértéséhez, tekintsük a következő példát. Készítünk egy indexet, amely a nevet és a születési évet tartalmazó mezőkből jön létre, ebben a sorrendben. Ha a születési dátum szerint adunk ki egy keresést, az SQL szerver nem fogja használni a létrehozott indexet. Ha viszont olyan lekérdezést készítünk, amely csak a névre vonatkozik, akkor az index attól függetlenül használható, hogy a lekérdezésben csak egyetlen mező szerepel.
Nem készíthetünk indexet BIT, IMAGE vagy TEXT típusú mezőkből. Az index hossza is kötött, így nem használhatunk nagyon hosszú mezőket sem.
Az indexek létrehozására két fajta lehetőségünk is van. Az egyik az Enterprise Manager program grafikus felülete, a másik a CREATE INDEX utasítás. Az alábbiakban megnézzük, hogy hogyan hozhatunk létre indexeket az Enterprise Manager program segítségével. A CREATE INDEX utasítással, terjedelme miatt a következő részben foglalkozunk.
Első lépésként hozzunk létre egy próba adatbázist, majd készítsünk egy adattáblát. Az adattábla objektumot jelző ikon fölött kattintsunk az egér jobb oldali gombjával. A megjelenő menüben válasszuk Az összes feladat – Manage Indexes menüpontot.
A megjelenő Manage Indexes ablakban van lehetőségünk új indexek létrehozására és már meglévők törlésére. Kattintsunk a New feliratú gombra.
Az Index name mezőben adjuk meg az index nevét, majd az alatta elhelyezkedő listában válasszuk ki azokat a mezőket, amelyekből az indexet létre akarjuk hozni. Ha végeztünk, kattintsunk az OK feliratú gombra. Ekkor visszatérünk a Manage Indexes ablakba. Ha akarunk, létrehozhatunk további indexeket is. Ha befejeztük az indexek létrehozását, a Close feliratú gombbal zárjuk be az ablakot.
Mint korábban szó volt róla, az indexeket az SQL szerver automatikusan használja. Nekünk nincs más dolgunk, mint kiadni a megfelelő SELECT utasításokat.

SELECT * FROM IndexProba
WHERE Kod=1000

SQL indexek cikksorozat

Indexek használata az SQL-ben - SQL indexek 1. rész

A CREATE INDEX utasítás használata - SQL indexek 2. rész