Sobes.tech
Middle

Jak index optimalizuje provádění dotazu?

sobes.tech AI

Odpověď od AI

Index je datová struktura (obvykle B-strom), která ukládá malou část dat tabulky a odkazy na odpovídající řádky v hlavní tabulce.

Proces optimalizace:

  1. Rychlé hledání: Místo úplného skenování celé tabulky (full table scan) systém správy databází (DBMS) prohledává index. Index je seřazený a optimalizovaný pro rychlé hledání ve vybraných sloupcích.
  2. Snížení objemu čtených dat: Index obsahuje pouze indexované sloupce a ukazatele, což výrazně snižuje množství dat, která je třeba číst z disku, ve srovnání s čtením celé řádky nebo celé stránky dat.
  3. Žádné třídění: Index je již seřazený podle indexovaných sloupců. To odstraňuje potřebu provádět nákladnou operaci třídění, pokud dotaz vyžaduje seřazené výsledky.
  4. Optimalizace JOIN operací: Při spojování tabulek (JOIN) podle indexovaných sloupců může DBMS použít index k rychlému nalezení odpovídajících řádků v jiné tabulce, místo provádění vnořených smyček přes celou tabulku.

Příklad:

Bez indexu na sloupci LastName pro dotaz SELECT * FROM Users WHERE LastName = 'Ivanov' by DBMS musel přečíst každý řádek v tabulce Users a zkontrolovat hodnotu LastName.

S indexem na LastName DBMS rychle najde záznamy, kde je LastName rovno 'Ivanov', prohledáváním seřazeného indexu, a poté používá ukazatele z indexu k získání úplných dat řádků z hlavní tabulky.

-- Příklad dotazu, který využívá index na LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Příklad vytvoření indexu pro optimalizaci výše uvedeného dotazu
CREATE INDEX IX_Users_LastName ON Users (LastName);