Junior
V jakých případech se používají indexy v databázích?
sobes.tech AI
Odpověď od AI
Indexy v databázích se používají k optimalizaci rychlosti vykonávání dotazů, zejména:
- Vyhledávání dat: Zrychlení operací
SELECT, zejména s podmínkamiWHERE,JOINaORDER BY. Index umožňuje SGBD rychleji najít potřebné řádky, aniž by prohledával celou tabulku. - Třídění: Zrychlení třídění pomocí
ORDER BY. Pokud mají sloupce třídění index, může je SGBD využít a vyhnout se dalším operacím třídění. - Spojování tabulek: Zrychlení operací
JOINna indexovaných sloupcích. Index pomáhá rychle najít odpovídající řádky v propojených tabulkách. - Unikátnost dat: Záruka unikátnosti hodnot ve sloupci (přes unikátní index).
- Primární klíče: Primární klíč je standardně unikátní index a slouží k rychlému přístupu k řádku podle unikátního identifikátoru.
- Sekundární klíče: Používají se k zajištění referenční integrity a urychlení operací
JOINmezi propojenými tabulkami.
Příklady sloupců pro indexaci:
- Sloupce, které se často hledají (
WHERE uid = 123). - Sloupce používané v podmínkách
JOIN(table1.id = table2.ref_id). - Sloupce, které se často třídí (
ORDER BY created_at DESC). - Sloupce s vysokou kardinalitou (mnoho unikátních hodnot).
Případy, kdy indexy mohou být neefektivní nebo zbytečné:
- Velmi malé tabulky: U malých tabulek může být skenování rychlejší nebo srovnatelné s hledáním přes index.
- Sloupce s nízkou kardinalitou: Index na sloupci s malým počtem unikátních hodnot (například booleanové pole TRUE/FALSE) nemusí přinést významné zrychlení.
- Časté zápisové operace (INSERT, UPDATE, DELETE): Indexy vyžadují aktualizaci při změně dat, což může zpomalit zápisové operace. Není vhodné indexovat všechny sloupce bez rozmyslu.
- Sloupce ve
WHEREs funkcemi: Pokud je na sloupci vWHEREpoužita funkce (napříkladWHERE YEAR(date_column) = 2023), běžný index nadate_columnnení využit. Je třeba funkční index (pokud ho SGBD podporuje) nebo přepsat dotaz.