V této části jsou rozebrány indexy, jejich funkce a vliv na rychlost provádění dotazů. Jedná se už o pokročilé téma, ale pokud se setkáváte s většími objemy dat, může vám výrazně pomoci.
SQL7 - Indexy
V této části jsou rozebrány indexy, jejich funkce a vliv na rychlost provádění dotazů. Jedná se už o pokročilé téma, ale pokud se setkáváte s většími objemy dat, může vám výrazně pomoci.
Co jsou to indexy
Indexy jsou pomocné datové struktury uložené v tabulkách, které zrychlují vyhledávání v datech díky jejich „seřazení“. Rychlejšího vyhledávání lze dosáhnout například uspořádáním položek indexu do vyváženého stromu. Složitost vyhledání položky potom klesne z lineární na logaritmickou. Způsobů technické realizace indexů je však celá řada a nemusí to být vždy stromy. Pokud by vás technická realizace zajímala více do hloubky, můžete se odrazit například od https://en.wikipedia.org/wiki/Database_index.
Pro nás je ovšem zásadní, jak zjistit, jaký index nám může dotaz zrychlit. To se provádí analýzou plánů provádění. Toto téma by samo o sobě vydalo na sérii přednášek. Koho by to zajímalo, můžete začít například touto přednáškou
https://www.wug.cz/zaznamy/463-WUG-Days-2018-Microsoft-SQL-Server-Execution-Plans-Query-Optimization
Pokud plánům provádění nerozumíte a rozumět nechcete, můžete zkusit využít funkci Explain a podívat se, jestli vám SQL Server sám nějaký index navrhne. Jak to vypadá, se můžete podívat ve videu.
Další materiály
Pokud se chcete o indexech dozvědět více, najdete na internetu celou řadu zdrojů. Pokud vás zajímá konkrétní implementace pro SQL Server, můžete začít například tady
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described
Kontrolní otázky
- Indexy umožňují …
- zrychlit vyhledávání v datech a jejich agregaci
- dostávat známky na vysoké škole
- procházet data řádek po řádku
- Indexy zrychlují …
- všechno a všude
- operace nad sloupci, nad nimiž jsou postaveny
- operace nad libovolnými sloupci v tabulce s indexem