Sobes.tech
Middle

Aké typy indexov existujú v SQL?

sobes.tech AI

Odpoveď od AI

  • B-strom (B-strom): Najbežnejší typ. Vhodný pre väčšinu operácií čítania, vrátane WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimalizovaný pre presné zhody (=). Nepodporuje rozsahové dotazy alebo zoradenie.

    -- Príklad syntaxe, môže sa líšiť v závislosti od DBMS
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Full-Text (Plný text): Používa sa na vyhľadávanie v texte vo veľkých textových poliach (VARCHAR, TEXT).

    -- Príklad syntaxe v MySQL
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Príklad syntaxe v PostgreSQL
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('slovak', text_column));
    
  • Prostorové (Spatial): Na indexovanie geografických dát (body, línie, polygóny). Používa sa s dátovými typmi ako GEOMETRY alebo GEOGRAPHY.

    -- Príklad syntaxe v MySQL
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Prí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 indexov vhodné pre rôzne úlohy, vrátane full-textového vyhľadávania, indexácie polí a JSON.

  • Clustered (Klastrované): Určuje fyzické poradie riadkov v tabuľke. Jedna tabuľka môže mať iba jeden klasterský index. Často je založený na primárnom kľúči.

    -- Pri deklarácii primárneho kľúča sa často vytvára klasterský index
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- V SQL Server
        ...
    );
    
  • Non-Clustered (Ne klasterské): Samostatná štruktúra dát, ktorá uchováva páry "hodnota stĺpca (alebo stĺpce) + ukazovateľ na riadok dát". Tabuľka môže mať viacero ne klasterských indexov.

Porovnanie:

Typ indexu Použitie Operácie
B-strom Všeobecný, pre väčšinu typov dát =, <, >, <=, >=, BETWEEN, LIKE (začiatok)
Hash Presná zhoda (=) =
Full-Text Vyhľadávanie v texte MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Prostorové Geografické dáta Prostorové funkcie
Klastr Fyzické usporiadanie riadkov Zrýchľuje výber rozsahov
Ne klasterské Zrýchľuje vyhľadávanie podľa indexovaných stĺpcov =, <, >, <= a pod.