Obsah

Indexování v databázích

Indexování je proces vytváření pomocných datových struktur, které databázovému stroji umožňují najít konkrétní řádky v tabulce bez nutnosti procházet každý jednotlivý záznam (tzv. Full Table Scan). Bez indexů by vyhledávání v milionech záznamů trvalo sekundy nebo i minuty; s indexem je to otázka milisekund.


Jak index funguje?

Představte si tabulku „Uzivatele“ s 10 miliony řádků. Chcete najít uživatele podle e-mailu:

Datové struktury: B-Tree

Většina moderních databází (jako MySQL nebo PostgreSQL) používá pro indexy strukturu zvanou B-Strom (B-Tree). Tato struktura udržuje data seřazená a umožňuje vyhledávání s logaritmickou složitostí. To znamená, že i když se počet dat zdvojnásobí, počet kroků k nalezení záznamu se zvýší jen o jeden.


Typy indexů

Typ Popis
Primární index Automaticky vytvořen pro primární klíč tabulky. Zajišťuje unikátnost.
Unikátní index Zajišťuje, že ve sloupci nebudou dvě stejné hodnoty (např. e-mail nebo rodné číslo).
Složený index Index vytvořený nad více sloupci najednou (např. Prijmeni + Jmeno).
Full-text index Speciální index pro vyhledávání slov uvnitř dlouhých textů (článků).

"Něco za něco": Cena za indexování

Indexy nejsou „zadarmo“. I když extrémně zrychlují čtení (Read), mají negativní dopady na jiné operace:

1. **Zpomalení zápisu (Write):** Při každém příkazu ''INSERT'', ''UPDATE'' nebo ''DELETE'' musí databáze aktualizovat nejen samotnou tabulku, ale i všechny přidružené indexy.
2. **Spotřeba místa:** Indexy jsou samostatné struktury uložené na disku. U velkých tabulek mohou indexy zabírat stejně nebo i více místa než samotná data.

Kdy indexovat a kdy ne?

Indexujte, pokud:

Neindexujte, pokud:


Související pojmy: SQL, RDBMS, MySQL, CRUD, B-Tree, Latence, Databáze.