Sobes.tech
Junior

Jaké typy indexů existují v databázích?

sobes.tech AI

Odpověď od AI

Hlavní typy indexů v databázích:

  1. B-strom (B+strom):

    • Nejrozšířenější typ.
    • Vhodný pro širokou škálu operací: vyhledávání v rozsahu, přesná shoda, třídění.
    • Výchozí v mnoha SGBD (MySQL, PostgreSQL, Oracle).
  2. Hashové indexy:

    • Na základě hash tabulky.
    • Velmi rychlé pro hledání přesné shody (=).
    • Nevhodné pro hledání v rozsahu (BETWEEN, <, >), třídění (ORDER BY) nebo hledání podle vzoru (LIKE).
  3. Indexy plného textu:

    • Určené pro hledání v textových polích (BLOB, TEXT).
    • Umožňují hledat slova nebo fráze, zohledňovat synonyma a provádět morfologickou analýzu.
    • Příklady: MATCH...AGAINST v MySQL/MariaDB, tsvector/tsquery v PostgreSQL.
  4. Prostorové indexy (R-strom):

    • Používají se pro indexaci geografických nebo prostorových dat.
    • Umožňují efektivně najít objekty v určité oblasti nebo limitech.
  5. Bitmapové indexy:

    • Používají se v některých SGBD (např. Oracle, PostgreSQL).
    • Vhodné pro pole s nízkou kardinalitou (málo unikátních hodnot, např. pohlaví, stav: aktivní/neaktivní).
    • Mohou být velmi efektivní pro složité dotazy s operacemi AND a OR.
  6. Klastry (clustered):

    • Ovlivňuje fyzické uspořádání datových řádků.
    • V tabulce může být pouze jeden klastr (clustered) index.
    • Často se používá pro primární klíč.
  7. Ne-klastr (non-clustered):

    • Neurčuje fyzické pořadí řádků.
    • Obsahuje ukazatele na fyzické umístění datových řádků.
    • Tabulka může mít více ne-klastr indexů.
  8. Pokryvný index (covering):

    • Index, který obsahuje všechny sloupce potřebné k vykonání dotazu, včetně sloupců v SELECT, podmínek v WHERE a ORDER BY.
    • Umožňuje SGBD, aby se vyhnulo přístupu k datům tabulky, což urychluje vykonání dotazu.
  9. Funkční index (podle výrazu):

    • Index postavený na výsledku funkce nebo výrazu nad jedním nebo více sloupci.
    • Umožňuje indexovat vypočítané hodnoty.

Při výběru typu indexu se zohledňuje typ dat, frekvence a povaha dotazů (vyhledávání podle přesné hodnoty, rozsahu, třídění, fulltextové vyhledávání atd.) a kardinalita sloupce.