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.
Představte si tabulku „Uzivatele“ s 10 miliony řádků. Chcete najít uživatele podle e-mailu:
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.
| 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ů). |
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.
Indexujte, pokud:
WHERE.JOIN).ORDER BY).Neindexujte, pokud:
Související pojmy: SQL, RDBMS, MySQL, CRUD, B-Tree, Latence, Databáze.