Sobes.tech
Middle

Kādi indeksu veidi pastāv SQL?

sobes.tech AI

Atbilde no AI

  • B-koks (B-tējs): Visbiežāk sastopamais tips. Piemērots lielākajai daļai lasīšanas operāciju, ieskaitot WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimizēts precīzām atbilstībām (=). Neatbalsta diapazona vaicājumus vai kārtošanu.

    -- Sintakses piemērs, var atšķirties atkarībā no DBMS
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Pilnīgs teksts (Full-Text): Izmanto lielu teksta lauku meklēšanai (VARCHAR, TEXT).

    -- MySQL sintakses piemērs
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- PostgreSQL sintakses piemērs
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('latvian', text_column));
    
  • Telpiskie (Spatial): Geogrāfisko datu indeksēšanai (POINT, LINE, POLYGON). Izmanto ar datu tipiem kā GEOMETRY vai GEOGRAPHY.

    -- MySQL sintakses piemērs
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- PostgreSQL sintakses piemērs
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Generalized Inverted Index) un GiST (Generalized Search Tree) PostgreSQL: Elastīgi indeksu tipi, piemēroti dažādiem uzdevumiem, tostarp pilnteksta meklēšanai, masīvu un JSON indeksēšanai.

  • Klasēts (Clustered): Nosaka fizisko rindu kārtību tabulā. Viena tabula var būt tikai ar vienu klasterētu indeksu. Bieži balstīts uz primāro atslēgu.

    -- Primārās atslēgas deklarācijā bieži tiek izveidots klasterēts indekss
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- SQL Server
        ...
    );
    
  • Nepārklājošs (Non-Clustered): Atsevišķa struktūra, kas glabā pārus "kolonnas vērtība (vai kolonnas) + norādītājs uz datu rindu". Tabula var saturēt vairākus neklasterētus indeksus.

Salīdzinājums:

Indeksa tips Pielietojums Operācijas
B-koks Vispārējs, lielākā daļa datu tipu =, <, >, <=, >=, BETWEEN, LIKE (sākums)
Hash Precīza atbilstība (=) =
Pilnīgs teksts Meklēšana tekstā MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Telpiskie Ģeogrāfiskie dati Telpiskās funkcijas
Klasēts Fiziska kārtošana rindu pēc kārtošanas Paātrina diapazona izvēli
Nepārklājošs Paātrina meklēšanu pēc indeksētajiem kolonnām =, <, >, <= un tml.