Sobes.tech
Middle

Jaké typy indexů existují v SQL?

sobes.tech AI

Odpověď od AI

  • B-strom (B-tree): Nejčastěji používaný typ. Vhodný pro většinu operací čtení, včetně WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimalizováno pro přesné shody (=). Nepodporuje rozsahové dotazy nebo řazení.

    -- Příklad syntaxe, může se lišit podle DBMS
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Full-Text (Plný text): Používá se pro hledání v textu ve velkých textových polích (VARCHAR, TEXT).

    -- Příklad syntaxe v MySQL
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Příklad syntaxe v PostgreSQL
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('czech', text_column));
    
  • Prostorové (Spatial): Pro indexaci geografických dat (body, linie, polygon). Používá se s datovými typy jako GEOMETRY nebo GEOGRAPHY.

    -- Příklad syntaxe v MySQL
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Příklad syntaxe v PostgreSQL
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Generalized Inverted Index) a GiST (Generalized Search Tree) v PostgreSQL: Flexibilní typy indexů vhodné pro různé úkoly, včetně full-textového vyhledávání, indexace polí a JSON.

  • Clustered (Klastry): Určuje fyzické pořadí řádků v tabulce. Tabulka může mít pouze jeden klastrační index. Často je založen na primárním klíči.

    -- Při deklaraci primárního klíče se často vytváří klastrační index
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- SQL Server
        ...
    );
    
  • Non-Clustered (Ne klastry): Samostatná struktura dat, která ukládá páry "hodnota sloupce (nebo sloupců) + ukazatel na řádek dat". Tabulka může mít více ne klastračních indexů.

Porovnání:

Typ indexu Použití Operace
B-strom Obecný, většina typů dat =, <, >, <=, >=, BETWEEN, LIKE (začátek)
Hash Přesná shoda (=) =
Full-Text Vyhledávání v textu MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Prostorové Geografická data Prostorové funkce
Klastr Fyzické uspořádání řádků Zrychluje výběr rozsahů
Ne klastr Zrychlení hledání podle indexovaných sloupců =, <, >, <= atd.