Cvičení 6
Téma: indexy v SQL
Indexes are a common way to enhance database performance. An index allows the database server to find and retrieve specific rows much faster than it could do without an index. But indexes also add overhead to the database system as a whole, so they should be used sensibly. (Dokumentace PostgreSQL)
Stojí za to pročíst
- Starší, ale velmi dobrý článek o indexech v PostgreSQL (navíc česky).
- Příkaz CREATE INDEX
- Analýza vlivu indexu
- Vícesloupcové indexy
- Indexy na výraz
- Dokumentace k indexům
Ukázka z hodiny
Ukázka s příklady z přednášky v PostgreSQL.
Úkoly
- Na serveru máte dvě (ořezané) databáze imdb a imdb_indexed. Jedna bez indexů, druhá se základními (implicitními) indexy. Zkuste si navrhnout několik dotazů, na kterých půjde vidět výhoda použití indexů.
- Společně popřemýšlejte a prodiskutujte, jaké další indexy byste vytvořili na imdb databázi a proč.
- Na své databázi naimportované minule, zkuste najít dotazy, které by se mohli často opakovat, a do databáze přidat indexy, které ji pro tento případ použití co nejvíce zefektivní. Nezapomeňte před experimentováním spustit ANALYZE. Postup si kontrolujte pomocí EXPLAIN a EXPLAIN ANALYZE. Pokud žádnou db z minula nemáte, zkopírujte si imdb a zkuste to na ni (třeba s indexy z úkolu 2).