Middle
Hogyan optimalizálja egy index a lekérdezés végrehajtását?
sobes.tech MI
Válasz az MI-től
A index egy adatszerkezet (általában B-fa), amely a táblázat kis részét és a főtábla megfelelő soraira mutató hivatkozásokat tárol.
Az optimalizálási folyamat:
- Gyors keresés: A teljes táblázat szkennelése (full table scan) helyett az adatbázis-kezelő rendszer (DBMS) átvizsgálja az indexet. Az index rendezett és optimalizált bizonyos oszlopokra való gyors kereséshez.
- Az olvasott adatok mennyiségének csökkentése: Az index csak az indexelt oszlopokat és mutatókat tartalmazza, így jelentősen csökkenti az olvasandó adatok mennyiségét a lemezről, összehasonlítva a teljes sor vagy oldal olvasásával.
- Nincs rendezés: Az index már rendezett az indexelt oszlopok szerint. Ez kiküszöböli a költséges rendezési művelet szükségességét, ha a lekérdezés rendezett eredményt igényel.
- JOIN műveletek optimalizálása: Indexelt oszlopokon történő táblák összekapcsolásakor (JOIN) a DBMS használhatja az indexet a megfelelő sorok gyors megtalálásához egy másik táblában, ahelyett, hogy beágyazott ciklusokat hajtana végre az egész táblán.
Példa:
Index nélkül a LastName oszlopon a SELECT * FROM Users WHERE LastName = 'Ivanov' lekérdezésnél a DBMS-nek minden sort olvasnia kell a Users táblában, és ellenőriznie kell a LastName értékét.
Az LastName indexével a DBMS gyorsan megtalálja azokat a rekordokat, ahol a LastName megegyezik az 'Ivanov' értékkel, átvizsgálva a rendezett indexet, majd a mutatókat felhasználva a teljes soradatok lekéréséhez a főtáblából.
-- Olyan lekérdezés példája, amely az `LastName` indexét használja
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Az előző lekérdezés optimalizálására index létrehozási példa
CREATE INDEX IX_Users_LastName ON Users (LastName);