Sobes.tech
Junior

V jakých případech se používají indexy v databázích?

sobes.tech AI

Odpověď od AI

Indexy v databázích se používají k optimalizaci rychlosti vykonávání dotazů, zejména:

  • Vyhledávání dat: Zrychlení operací SELECT, zejména s podmínkami WHERE, JOIN a ORDER BY. Index umožňuje SGBD rychleji najít potřebné řádky, aniž by prohledával celou tabulku.
  • Třídění: Zrychlení třídění pomocí ORDER BY. Pokud mají sloupce třídění index, může je SGBD využít a vyhnout se dalším operacím třídění.
  • Spojování tabulek: Zrychlení operací JOIN na indexovaných sloupcích. Index pomáhá rychle najít odpovídající řádky v propojených tabulkách.
  • Unikátnost dat: Záruka unikátnosti hodnot ve sloupci (přes unikátní index).
  • Primární klíče: Primární klíč je standardně unikátní index a slouží k rychlému přístupu k řádku podle unikátního identifikátoru.
  • Sekundární klíče: Používají se k zajištění referenční integrity a urychlení operací JOIN mezi propojenými tabulkami.

Příklady sloupců pro indexaci:

  • Sloupce, které se často hledají (WHERE uid = 123).
  • Sloupce používané v podmínkách JOIN (table1.id = table2.ref_id).
  • Sloupce, které se často třídí (ORDER BY created_at DESC).
  • Sloupce s vysokou kardinalitou (mnoho unikátních hodnot).

Případy, kdy indexy mohou být neefektivní nebo zbytečné:

  • Velmi malé tabulky: U malých tabulek může být skenování rychlejší nebo srovnatelné s hledáním přes index.
  • Sloupce s nízkou kardinalitou: Index na sloupci s malým počtem unikátních hodnot (například booleanové pole TRUE/FALSE) nemusí přinést významné zrychlení.
  • Časté zápisové operace (INSERT, UPDATE, DELETE): Indexy vyžadují aktualizaci při změně dat, což může zpomalit zápisové operace. Není vhodné indexovat všechny sloupce bez rozmyslu.
  • Sloupce ve WHERE s funkcemi: Pokud je na sloupci v WHERE použita funkce (například WHERE YEAR(date_column) = 2023), běžný index na date_column není využit. Je třeba funkční index (pokud ho SGBD podporuje) nebo přepsat dotaz.