Sobes.tech
Middle

Millised indeksitüübid on SQL-is olemas?

sobes.tech AI

Vastus AI-lt

  • B-puu (B-täis): Kõige levinum tüüp. Sobib enamikuks lugemisoperatsioonidest, sealhulgas WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Optimeeritud täpsete vasteide jaoks (=). Ei toeta vahemiku päringuid ega sorteerimist.

    -- Süntaksi näide, võib sõltuvalt andmebaasisüsteemist erineda
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Täistekst (Full-Text): Kasutatakse suure tekstivälja otsimiseks (VARCHAR, TEXT).

    -- MySQL-i süntaksi näide
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- PostgreSQL-i süntaksi näide
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('estonian', text_column));
    
  • Ruumi (Spatial): Geograafiliste andmete indekseerimiseks (POINT, LINE, POLYGON). Kasutatakse andmetüüpidega nagu GEOMETRY või GEOGRAPHY.

    -- MySQL-i süntaksi näide
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- PostgreSQL-i süntaksi näide
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Generalized Inverted Index) ja GiST (Generalized Search Tree) PostgreSQL: Paindlikud indeksitüübid, sobivad erinevate ülesannete jaoks, sealhulgas täistekstiline otsing, massiivide ja JSON-i indeksid.

  • Klastriline (Clustered): Määrab füüsilise järjekorra ridadest tabelis. Üks tabel võib omada ainult ühte klastrilist indeksit. Sageli põhineb esmase võtme väärtusel.

    -- Eeldusel, et määratletud esmase võti, sageli luuakse klastriline indeks
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- SQL Serveris
        ...
    );
    
  • Mitteklaastriline (Non-Clustered): Eraldise struktuur, mis salvestab paare "veeru väärtus (või veerud) + viit tabeli ridadele". Tabel võib omada mitut mitteklaastrilist indeksit.

Võrdlus:

Indeksi tüüp Rakendus Operatsioonid
B-puu Üldine, enamik andmetüüpe =, <, >, <=, >=, BETWEEN, LIKE (algus)
Hash Täpne vaste (=) =
Täistekst Teksti otsing MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Ruumi Geograafilised andmed Ruumi funktsioonid
Klastriline Füüsiline järjekord ridadest Kiirendab vahemiku valikuid
Mitteklaastriline Kiirendab otsingut indekseeritud veergudel =, <, >, <= jms.