Дар PostgreSQL кадом намудҳои индекс вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
Дарозӣ намуданҳои асосии индексҳо:
-
B-дерево (B-tree) - маъмултарин навъ, мувофиқ барои бештари суолҳои оддӣ (баробарӣ, муқоиса, диапазон). Бар асоси дарختани мувозинатёфта.
-
Hash (Хеш) - барои санҷиши баробарӣ (=) истифода мешавад. Аз B-дерево тезтар аст барои чунин суолҳо, аммо муқоиса ва диапазонҳоро дастгирӣ намекунад. Ҳеш-арзиши калид ва ишора ба сатрро нигоҳ медорад.
-
GiST (Generalized Search Tree) - сохтори умумии дарахт барои ҷустуҷӯ, имкон медиҳад сохтани индексҳои гуногун барои намудҳои мураккаби маълумот (геометрӣ, матнӣ бо ҷустуҷӯи пурмазмӯъ). Бар асоси дарختани мувозинатёфта.
-
SP-GiST (Space-Partitioned Generalized Search Tree) - версияи махсуси GiST барои маълумоте, ки метавон онҳоро ба ҷойгоҳ тақсим кард (масалан, нуқтаҳо, росткунҷаҳо). Мисолҳо: дарахтони k-d, quadtree.
-
GIN (Generalized Inverted Index) - индексҳои инвертӣ умумӣ, асосан барои ҷустуҷӯи унсурҳо дар арзишҳои мураккаб (масалан, массивҳо, JSONB). Бисёр барои ҷустуҷӯи пурмазмӯъ истифода мешавад.
-
BRIN (Block Range INdex) - индекс барои диапазони блокҳо. Барои ҷадвалҳои хеле калон бо маълумоти табиӣ ба тартиб даромада (масалан, дар вақти). Диапазони арзишҳоро дар блокҳои физикии диск индекс мекунад.
-
Bloom (Блум-филтр) - на совсем индекс анъанавӣ, балки структураи эҳтимолӣ барои санҷиши зуд надоштани унсур. Барои суръат бахшидани интихоб аз ҷадвалҳои хеле калон истифода мешавад, вақте ки мувофиқат кардан лозим нест ё ҳамчун филтри иловагӣ пеш аз скан кардани индекс асосӣ.
Маслиҳатҳо барои истифода:
- B-дерево: индекс барои майдонҳои рақамӣ, санаҳо, сатрҳо барои ҷустуҷӯи дар диапазон (
WHERE amount > 100). - Hash: камтар истифода мешавад мустақиман, зеро B-дерево одатан тезтар аст.
- GiST: индексҳои ҷуғрофӣ (
gist(location)), индексҳо барои ҷустуҷӯи пурмазмӯъ (to_tsvector). - SP-GiST: индексҳо барои маълумоти дуандоза (
spgist(point)). - GIN: индексҳо барои массивҳо (
gin(tags)), JSONB (gin(data)), ҷустуҷӯи пурмазмӯъ. - BRIN: индекс барои майдони
timestampдар ҷадвали логҳо, ки маълумотҳо дар вақти муайян шудаанд. - Bloom: индекс барои маҷмӯи сутунҳо (
bloom(col1, col2, col3)) барои рад кардани зуд сатрҳо, ки дар он ҷо маҷмӯи арзишҳо бехатаранд.
Интихоби навъи индекс вобаста ба навъи маълумоти сутун ва навъи суолҳое, ки бояд оптимизатсия шаванд.