Sobes.tech
Middle

Koje vrste indeksa postoje u SQL?

sobes.tech АИ

Одговор од АИ

  • B-stablo (B-tree): Najčešće korišćen tip. Pogodan za većinu operacija čitanja, uključujući WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimizovan za tačna podudaranja (=). Ne podržava opsežne upite ili sortiranje.

    -- Primer sintakse, može se razlikovati u zavisnosti od DBMS-a
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Full-Text (Pun tekst): Koristi se za pretraživanje teksta u velikim tekstualnim poljima (VARCHAR, TEXT).

    -- Primer sintakse u MySQL-u
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Primer sintakse u PostgreSQL-u
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('serbian', text_column));
    
  • Prostorne (Spatial): Za indeksiranje geografskih podataka (tačke, linije, poligoni). Koristi se sa tipovima podataka kao što su GEOMETRY ili GEOGRAPHY.

    -- Primer sintakse u MySQL-u
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Primer sintakse u PostgreSQL-u
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Generalized Inverted Index) i GiST (Generalized Search Tree) u PostgreSQL-u: Fleksibilni tipovi indeksa, pogodni za različite zadatke, uključujući pun tekst, indeksiranje nizova i JSON.

  • Klasterski (Clustered): Određuje fizički red redova u tabeli. Jedna tabela može imati samo jedan klasterski indeks. Često je zasnovan na primarnom ključu.

    -- Pri deklaraciji primarnog ključa, često se kreira klasterski indeks
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- U SQL Server
        ...
    );
    
  • Ne klasterski (Non-Clustered): Odvojena struktura podataka, koja čuva parove "vrednost kolone (ili kolona) + pokazivač na red podataka". Tabela može imati više ne klasterskih indeksa.

Uporedba:

Tip indeksa Primena Operacije
B-stablo Opšte, za većinu tipova podataka =, <, >, <=, >=, BETWEEN, LIKE (početak)
Hash Tačno podudaranje (=) =
Full-Text Pretraživanje teksta MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Prostorne Geografski podaci Prostorne funkcije
Klasterski Fizičko poređivanje redova Ubrzava izbore opsega
Ne klasterski Ubrzava pretragu po indeksiranim kolonama =, <, >, <= i sl.