Sobes.tech
Middle

Milyen típusú indexek léteznek SQL-ben?

sobes.tech MI

Válasz az MI-től

  • B-fa (B-tábla): A legelterjedtebb típus. Alkalmas a legtöbb olvasási művelethez, beleértve a WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Pontos egyezésekhez optimalizált (=). Nem támogatja a tartományi lekérdezéseket vagy a rendezést.

    -- Szintaxis példa, adatbázis-kezelőtől függően eltérhet
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Teljes szöveg (Full-Text): Nagy szöveges mezőkben (VARCHAR, TEXT) történő kereséshez.

    -- Szintaxis példa MySQL-ben
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Szintaxis példa PostgreSQL-ben
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('magyar', text_column));
    
  • Térbeli (Spatial): Geográfiai adatok indexeléséhez (pontok, vonalak, sokszögek). Olyan adattípusokkal használják, mint a GEOMETRY vagy GEOGRAPHY.

    -- Szintaxis példa MySQL-ben
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Szintaxis példa PostgreSQL-ben
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Generalized Inverted Index) és GiST (Generalized Search Tree) PostgreSQL-ben: Rugalmas indextípusok, különféle feladatokra, beleértve a teljes szöveg keresést, tömbök és JSON indexelést.

  • Klaszterezett (Clustered): Meghatározza a sorok fizikai sorrendjét a táblában. Egy táblának csak egy klaszterezett indexe lehet. Gyakran az elsődleges kulcs alapján.

    -- Elsődleges kulcs megadása esetén gyakran jön létre klaszterezett index
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- SQL Server
        ...
    );
    
  • Nem klaszterezett (Non-Clustered): Külön struktúra, amely a "oszlopérték (vagy oszlopok) + mutató a sorra" párokat tárolja. Egy táblának több nem klaszterezett indexe lehet.

Összehasonlítás:

Index típus Alkalmazás Műveletek
B-fa Általános, legtöbb adattípushoz =, <, >, <=, >=, BETWEEN, LIKE (kezdő)
Hash Pontos egyezés (=) =
Teljes szöveg Szöveg keresése MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Térbeli Geográfiai adatokhoz Térbeli függvények
Klaszterezett Fizikai sorrend a sorok között Gyorsítja a tartományi lekérdezéseket
Nem klaszterezett Gyorsítja a keresést indexelt oszlopokon =, <, >, <= stb.