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:
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
timestampmező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.