Sobes.tech
Middle

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

sobes.tech MI

Válasz az MI-től

A következő fő indextípusok léteznek:

  1. B-fa (B-fa) - a legelterjedtebb típus, alkalmas a legtöbb tipikus lekérdezéshez (egyenlőség, összehasonlítás, tartomány). Egyensúlyozott fára épül.

  2. Hash (Hash) - az egyenlőség (=) ellenőrzésére szolgál. Gyorsabb, mint a B-fa ilyen lekérdezéseknél, de nem támogatja az összehasonlításokat és a tartományokat. A kulcs hash értékét és egy mutatót tárol a sorra.

  3. GiST (Generalized Search Tree) - általánosított keresőfa struktúra, amely lehetővé teszi különböző indexek építését összetett adat típusokra (geometriai, szöveges, teljes szöveges kereséssel). Egyensúlyozott fára épül.

  4. SP-GiST (Space-Partitioned Generalized Search Tree) - a GiST speciális változata, amely olyan adatokhoz való, amelyeket tér szerint lehet felosztani (pl. pontok, téglalapok). Példák: k-d fák, quadtrees.

  5. GIN (Generalized Inverted Index) - általánosított invertált index, főként összetett értékek (pl. tömbök, JSONB) belső elemeinek keresésére. Gyakran használják teljes szöveges kereséshez.

  6. BRIN (Block Range INdex) - blokk tartomány index. Nagyon nagy táblákhoz alkalmas, természetesen rendezett adatokhoz (pl. idő szerint). A fizikai lemez blokkjainak érték tartományát indexeli.

  7. Bloom (Bloom szűrő) - nem hagyományos index, hanem egy valószínűségi adatstruktúra, amely gyorsan ellenőrzi egy elem hiányát. Gyorsítja a kiválasztást nagyon nagy táblákból, amikor nem szükséges pontos egyezés vagy mintafilterként használják az index fő szkennelése előtt.

Használati példák:

  • B-fa: index numerikus mezőkre, dátumokra, szövegekre tartomány kereséshez (WHERE amount > 100).
  • Hash: ritkán használják közvetlenül, mivel a B-fa általában gyorsabb.
  • GiST: geospaciális indexek (gist(location)), teljes szöveges keresés indexek (to_tsvector).
  • SP-GiST: kétdimenziós adatok indexei (spgist(point)).
  • GIN: tömb indexek (gin(tags)), JSONB (gin(data)), teljes szöveges keresés.
  • BRIN: index a timestamp mezőn napló táblákban, ahol az adatok idő szerint rendezettek.
  • Bloom: index egy oszlopkészleten (bloom(col1, col2, col3)) a gyors kizárás érdekében, ahol a érték kombinációja nem található.

Az index típusának kiválasztása a oszlop adat típusától és a kívánt lekérdezés típusától függ.