Middle
Ako index optimalizuje vykonávanie dotazu?
sobes.tech AI
Odpoveď od AI
Index je dátová štruktúra (zvyčajne B-strom), ktorá uchováva malú časť údajov tabuľky a odkazy na zodpovedajúce riadky v hlavnej tabuľke.
Proces optimalizácie:
- Rýchle vyhľadávanie: Namiesto úplného skenovania celej tabuľky (full table scan) systém správy databáz (DBMS) prehľadáva index. Index je zoradený a optimalizovaný pre rýchle vyhľadávanie v určitých stĺpcoch.
- Zníženie objemu čítaných údajov: Index obsahuje iba indexované stĺpce a ukazovatele, čo značne znižuje množstvo údajov, ktoré je potrebné prečítať z disku v porovnaní s čítaním celého riadku alebo celej stránky dát.
- Žiadne zoradenie: Index je už zoradený podľa indexovaných stĺpcov. To odstraňuje potrebu vykonávať nákladnú operáciu zoradenia, ak požiadavka na dotaz vyžaduje zoradený výsledok.
- Optimalizácia JOIN operácií: Pri spájaní tabuliek (JOIN) podľa indexovaných stĺpcov môže DBMS použiť index na rýchle nájdenie zodpovedajúcich riadkov v inej tabuľke, namiesto vykonávania vnorených slučiek cez celú tabuľku.
Príklad:
Bez indexu na stĺpci LastName pre dotaz SELECT * FROM Users WHERE LastName = 'Ivanov', by DBMS musel prečítať každý riadok v tabuľke Users a skontrolovať hodnotu LastName.
S indexom na LastName, DBMS rýchlo nájde záznamy, kde je LastName rovné 'Ivanov', prehliadaním zoradeného indexu a následne používaním ukazovateľov z indexu na získanie úplných údajov riadkov z hlavnej tabuľky.
-- Príklad dotazu, ktorý využíva index na LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Príklad vytvorenia indexu na optimalizáciu vyššie uvedeného dotazu
CREATE INDEX IX_Users_LastName ON Users (LastName);