Sobes.tech
Middle

PostgreSQL'da qanday indeks turlari mavjud?

sobes.tech AI

AIdan javob

Asosiy indeks turlarining quyidagilari mavjud:

  1. B-tree (B daraxti) - eng keng tarqalgan tur, ko‘pchilik odatiy so‘rovlar uchun mos (tenglik, taqqoslash, diapazon). Muvozanatli daraxtga asoslangan.

  2. Hash (Hash) - tenglik (=) tekshirish uchun ishlatiladi. B-tree ga nisbatan shoshilinchroq, lekin taqqoslash va diapazonlarni qo‘llab-quvvatlamaydi. Kalitning hash qiymatini va satrga ko‘rsatkichni saqlaydi.

  3. GiST (Generalized Search Tree) - murakkab ma’lumot turlari uchun turli indekslar qurishga imkon beradigan umumiy qidiruv daraxti tuzilmasi. Muvozanatli daraxtga asoslangan.

  4. SP-GiST (Space-Partitioned Generalized Search Tree) - GiST ning maxsus versiyasi, ma’lumotlarni bo‘lish mumkin bo‘lgan joyga ajratish uchun (masalan, nuqtalar, to‘rtburchaklar). Misollar: k-d daraxtlar, quadtrees.

  5. GIN (Generalized Inverted Index) - umumiy teskari indeks, asosan, elementlarni ichki qiymatlar (masalan, massivlar, JSONB) ichida qidirish uchun. To‘liq matnli qidiruv uchun keng qo‘llaniladi.

  6. BRIN (Block Range INdex) - blok diapazoni indeksi. Juda katta jadvallar uchun, tabiiy ravishda tartiblangan ma’lumotlar (masalan, vaqt bo‘yicha) uchun mos. Diskdagi fizik bloklar bo‘yicha qiymat diapazonini indekslaydi.

  7. Bloom (Bloom filtri) - an’anaviy indeks emas, balki ehtimollik tuzilmasi bo‘lib, elementning mavjud emasligini tezda tekshirish uchun ishlatiladi. Juda katta jadvallardan tanlashni tezlashtirish uchun yoki asosiy indeksni skanerlashdan oldin qo‘shimcha filtr sifatida qo‘llaniladi.

Qo‘llanma misollari:

  • B-tree: raqamli maydonlar, sanalar, satrlar uchun diapazon bo‘yicha qidiruv (WHERE amount > 100).
  • Hash: to‘g‘ridan-to‘g‘ri ishlatilmaydi, chunki B-tree ko‘pchilik vazifalar uchun odatda tezroq.
  • GiST: geografik indekslar (gist(location)), to‘liq matnli qidiruv indekslari (to_tsvector).
  • SP-GiST: ikki o‘lchovli ma’lumotlar uchun indekslar (spgist(point)).
  • GIN: massivlar (gin(tags)), JSONB (gin(data)), to‘liq matnli qidiruv.
  • BRIN: log jadvaldagi timestamp maydoni uchun indeks, ma’lumotlar vaqt bilan tartiblangan.
  • Bloom: ustunlar to‘plami uchun indeks (bloom(col1, col2, col3)) va qiymatlarning to‘g‘ri kelmasligini tezda aniqlash uchun.

Indeks turini tanlash, ustun ma’lumotlarining turiga va optimallashtiriladigan so‘rovlar turiga bog‘liq.