Index urychluje vyhledávání dat. Bez něj databáze prohledává každý řádek a hledá odpovídající záznamy. S indexem se přeskočí přímo na příslušné řádky. Index je samostatná datová struktura, která mapuje hodnoty na umístění. Index knih funguje stejným způsobem. Vyhledáte termín a najdete číslo stránky. Nečtete každou stránku, abyste ho našli. Databáze dělá totéž.
Indexy mají svou cenu. Zabírají místo. Zpomalují vkládání, aktualizace a mazání, protože i index se musí aktualizovat. Každý zápis se stává dražším. Výhodou je rychlejší čtení. Pro úlohy s velkým čtením jsou indexy nezbytné. Pro úlohy s velkým zápisem příliš mnoho indexů snižuje výkon. Výběr sloupců k indexování vyžaduje pochopení vzorců dotazů. Sloupce použité v klauzulích WHERE, podmínkách JOIN a klauzulích ORDER BY jsou dobrými kandidáty. Sloupce s nízkou mohutností, jako je booleovský příznak, jsou špatnými kandidáty, protože index vyhledávání příliš nezužuje. Kompozitní indexy pokrývají více sloupců a mohou obsluhovat dotazy, které filtrují podle několika polí. Pořadí sloupců v kompozitním indexu je důležité. Databáze může použít kompozitní index pro dotazy na úvodním sloupci, ale ne pouze na koncových sloupcích. Návrh indexu je kompromis. Cílem je zrychlit dotazy, na kterých záleží, aniž by se zápisy zpomalily více, než je nutné.
Typy indexů
- B-strom – výchozí nastavení pro většinu databází, vhodné pro dotazy na rozsah
- Hash — rychlé vyhledávání rovnosti, bez podpory rozsahu
- Bitmapa — sloupce s nízkou mohutností, analytické dotazy
- Fulltextové vyhledávání – textové vyhledávání
- Kompozitní – více sloupců v jednom indexu
Index je zkratka. Vyměňuje rychlost zápisu a úložiště za rychlost čtení. Používejte ho tam, kde na čtení záleží nejvíce.
Comments (3)
Leave a comment