Nikdy nevíš, kdy to přijde
Zobrazit menu   MENU

17. K čemu slouží indexy

S indexy jsme se již v minulých dílech tutoriálu několikrát setkali. Nyní nastal čas, abychom si o nich pověděli více.

Indexy slouží k zefektivnění procházení tabulek. Pokud máme opravdu rozsáhlé tabulky, vyhledávání v nich začně být (výkonově a časově) náročná operace. Technicky je index pomocná datová struktura, která se váže k určité tabulce a která databázi říká, kde zhruba se požadované záznamy nachází. Pokud bychom žádné indexy v tabulce nepoužili, musí databázový systém projít úplně všechny řádky.

Index si můžeme představit jako katalog knih v knihovně. Pokud bychom neměli žádný katalog a hledali konkrétní knihu, museli bychom projít všechny regály a podívat se na každou knihu. Pokud ale budeme mít index - katalog, najdeme v něm že naše kniha se nechází v regálu C v druhé poličce odzhora - teď už musíme projít pouze jedinou poličku knih abychom našli tu naši.

Možná si říkáte, proč tedy automaticky všechny sloupce ve všech tabulkách nemají indexy? Indexy mají jak se dá očekávat i své nevýhody. Velmi efektivně zrychlují operaci vyhledávání, je to ale na úkor rychlosti vkládání/aktualizace/mazání dat.

Paralela s knihovnou se opět hodí. Pokud bychom katalog neměli, můžeme novou knihu vložit na nejbližší místo, zkrátka kamkoliv. Pokud ale máme nějaká katalogová pravidla, musíme najít vhodný regál a poté danou poličku, kam nová kniha podle svých vlasností patří. Takové hledaní nám už zabere nějaký čas a zabere nám ho tím více, čím více knih v celé knihovně již máme.

Čím více záznamů tabulka s indexem obsahuje, tím vyšší je čas vložení nového záznamu


Druhy indexů v MySQL

MySQL nám umožnuje využít několik druhů indexů, každý s jiným speciálním účelem:



Vytváření indexu

Vytváření a rušení indexu není příliš běžnou akcí, proto k tomuto účelu budete pravděpodoně nejčastěji využívat nějaký systém pro správu databáze. Pro úplnost si ale uvedeme i příkaz:

ALTER TABLE knihy ADD INDEX (nazev);

Tímto příkazem vytvoříme v naší tabulce index na sloupcem nazev, což davá smysl. Název je patrně jedno z nejčastějších hledisek, podle kterého bychom knihu vyhledávali. Index pak můžeme zrušit takto:

ALTER TABLE KNIHY DROP INDEX nazev;

V příkazu vidíme menší nesoulad. Narozdíl od vytváření se zde nepoužívají závorky. Indexy můžeme vytvářet již při definici tabulky, nebo kdykoliv později ikdyž již tabulka obsahuje data.

Pokud vkládáme obrovské množství dat, je efektivnější předtím index zrušit a po vložení opět vytvořit.


V tomto článku jsme si vysvětlili k čemu indexy jsou a jak je vytvořit. Nemůžeme ale indexy rozházet po sloupcíh jen tak náhodně, přístě si proto vysvětlíme jaká by měla být logika vytváření indexů abychom využívali databázi co nejefektivněji.


Další díly tutoriálu

15. Operace nad vybranými daty
16. Výběr dat - co se jinam nevešlo
17. K čemu slouží indexy
18. Jak správně používat indexy
19. Transakce