Junior
Milyen esetekben használják az indexeket az adatbázisokban?
sobes.tech MI
Válasz az MI-től
Az adatbázisokban az indexek a lekérdezések végrehajtási sebességének optimalizálására szolgálnak, különösen:
- Adatkeresés: A
SELECTműveletek gyorsítására, különösen aWHERE,JOINésORDER BYfeltételekkel. Az index lehetővé teszi az adatbázis-kezelő rendszer (DBMS) számára, hogy gyorsabban megtalálja a szükséges sorokat anélkül, hogy az egész táblát átvizsgálná. - Rendezés: A rendezés gyorsítása
ORDER BYsegítségével. Ha a rendezési oszlopok indexelve vannak, a DBMS használhatja azokat, elkerülve a további rendezési műveleteket. - Táblák összekapcsolása: Az indexelt oszlopokon végzett
JOINműveletek gyorsítása. Az index segít gyorsan megtalálni a kapcsolódó táblák megfelelő sorait. - Adatok egyedisége: A oszlop értékeinek egyedisége garantált (egyedi index segítségével).
- Elsődleges kulcsok: Az elsődleges kulcs alapértelmezés szerint egy egyedi index, amely gyors hozzáférést biztosít az egyedi azonosítóval rendelkező sorhoz.
- Másodlagos kulcsok: Azok a kulcsok, amelyek a hivatkozási integritás biztosítására és a
JOINműveletek gyorsítására szolgálnak a kapcsolódó táblák között.
Indexelhető oszlopok példái:
- Gyakran keresett oszlopok (
WHERE uid = 123). JOINfeltételeiben használt oszlopok (table1.id = table2.ref_id).- Gyakran rendezett oszlopok (
ORDER BY created_at DESC). - Magas kardinalitású oszlopok (sok egyedi érték).
Olyan esetek, amikor az indexek nem hatékonyak vagy nem szükségesek:
- Nagyon kicsi táblák: Kis táblák esetén a szkennelés gyorsabb lehet, vagy összehasonlítható a indexes kereséssel.
- Alacsony kardinalitású oszlopok: Egy oszlop indexelése kevés egyedi értékkel (pl. igaz/hamis boolean mező) nem hoz jelentős gyorsulást.
- Gyakori írási műveletek (INSERT, UPDATE, DELETE): Az indexek frissítést igényelnek az adatok módosításakor, ami lassíthatja az írási műveleteket. Nem ajánlott minden oszlopot véletlenszerűen indexelni.
WHEREfeltételek függvényekkel: Ha egy függvényt alkalmazunk az oszlopon aWHERE-ben (pl.WHERE YEAR(date_column) = 2023), akkor a normál index adate_column-on nem használható. Funkcionális indexek szükségesek lehetnek (ha a DBMS támogatja), vagy a lekérdezést át kell írni.