Sobes.tech
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:

  1. 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.
  2. 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.
  3. Ž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.
  4. 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);