Sobes.tech
Middle

Дар PostgreSQL кадом намудҳои индекс вуҷуд доранд?

sobes.tech AI

Ҷавоб аз AI

Дарозӣ намуданҳои асосии индексҳо:

  1. B-дерево (B-tree) - маъмултарин навъ, мувофиқ барои бештари суолҳои оддӣ (баробарӣ, муқоиса, диапазон). Бар асоси дарختани мувозинатёфта.

  2. Hash (Хеш) - барои санҷиши баробарӣ (=) истифода мешавад. Аз B-дерево тезтар аст барои чунин суолҳо, аммо муқоиса ва диапазонҳоро дастгирӣ намекунад. Ҳеш-арзиши калид ва ишора ба сатрро нигоҳ медорад.

  3. GiST (Generalized Search Tree) - сохтори умумии дарахт барои ҷустуҷӯ, имкон медиҳад сохтани индексҳои гуногун барои намудҳои мураккаби маълумот (геометрӣ, матнӣ бо ҷустуҷӯи пурмазмӯъ). Бар асоси дарختани мувозинатёфта.

  4. SP-GiST (Space-Partitioned Generalized Search Tree) - версияи махсуси GiST барои маълумоте, ки метавон онҳоро ба ҷойгоҳ тақсим кард (масалан, нуқтаҳо, росткунҷаҳо). Мисолҳо: дарахтони k-d, quadtree.

  5. GIN (Generalized Inverted Index) - индексҳои инвертӣ умумӣ, асосан барои ҷустуҷӯи унсурҳо дар арзишҳои мураккаб (масалан, массивҳо, JSONB). Бисёр барои ҷустуҷӯи пурмазмӯъ истифода мешавад.

  6. BRIN (Block Range INdex) - индекс барои диапазони блокҳо. Барои ҷадвалҳои хеле калон бо маълумоти табиӣ ба тартиб даромада (масалан, дар вақти). Диапазони арзишҳоро дар блокҳои физикии диск индекс мекунад.

  7. 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)) барои рад кардани зуд сатрҳо, ки дар он ҷо маҷмӯи арзишҳо бехатаранд.

Интихоби навъи индекс вобаста ба навъи маълумоти сутун ва навъи суолҳое, ки бояд оптимизатсия шаванд.