Indeks turlari
PostgreSQL bir nechta indeks turlarini taqdim etadi: B-treee, Hash, GiST va GIN. Har bir indeks turi har xil turdagi so'rovlarga eng mos keladigan boshqa algoritmdan foydalanadi. Odatda, CREATE INDEX buyrug'i eng ko'p uchraydigan holatlarga mos keladigan B-tree indekslarini yaratadi.
B-tree tenglik belgilari bilan ishlashga qodir va ba'zi buyurtmalar bo'yicha saralanadigan ma'lumotlar bo'yicha so'rovlarni qamrab olishi mumkin. Xususan, PostgreSQL quyidagi operatorlardan biri yordamida taqqoslashda indekslangan ustun ishtirok etganda B-tree indeksidan foydalanadi:
BETWEEN va IN kabi ushbu operatorlarning kombinatsiyalariga teng bo'lgan konstruktsiyalar, shuningdek, B-tree indekslarini qidirish bilan amalga oshirilishi mumkin. Shuningdek, indeks ustunidagi IS NULL yoki NOT NULL sharti B-tree ko'rsatkichi bilan ishlatilishi mumkin.
Optimallashtiruvchi shuningdek, LIKE va ~ naqshlariga mos keladigan operatorlar ishtirokidagi so'rovlar uchun B-tree indeksidan foydalanishi mumkin, agar naqsh doimiy bo'lsa va mag'lubiyat boshiga bog'langan bo'lsa - masalan, col LIKE 'foo%' yoki col ~ '^ foo ', lekin "% bar" kabi LIKE emas. Ammo, agar sizning ma'lumotlar bazangiz C tilidan foydalanmasa, siz namunalarga mos keladigan so'rovlarni indeksatsiyalashni qo'llab-quvvatlash uchun maxsus operator klassi bilan indeks yaratishingiz kerak bo'ladi; quyidagi 11.9-bo'limga qarang. ILIKE va ~ * uchun B daraxti indekslaridan foydalanish ham mumkin, lekin faqat naqsh alfavit bo'lmagan belgilar bilan boshlanganda, ya'ni katta / kichik harflar konvertatsiyasiga ta'sir qilmaydigan belgilar.
Ma'lumotlarni saralangan tartibda olish uchun B-tree indekslaridan ham foydalanish mumkin. Bu har doim ham oddiy skanerlash va tartiblashdan tezroq emas, lekin ko'pincha foydalidir.
Hash indekslari faqat oddiy tenglikni taqqoslash bilan shug'ullanishi mumkin. PostgreSQL indekslangan ustun har doim = operatori yordamida taqqoslashda ishtirok etganda Hash indeksidan foydalanishni ko'rib chiqadi. Hash indeksini yaratish uchun quyidagi buyruq ishlatiladi:
GiST indekslari bu bitta turdagi indeks emas, aksincha uning ichida turli xil indeksatsiya strategiyalarini amalga oshirish mumkin bo'lgan infratuzilma hisoblanadi. Shunga ko'ra, GiST indeksidan foydalanish mumkin bo'lgan alohida operatorlar indeksatsiya strategiyasiga (operatorlar sinfi) qarab farq qiladi. Masalan, PostgreSQL-ning standart taqsimoti bir nechta ikki o'lchovli geometrik ma'lumotlar turlari uchun GiST operator sinflarini o'z ichiga oladi, ular quyidagi operatorlar yordamida indekslangan so'rovlarni qo'llab-quvvatlaydi:
GiST indekslari, shuningdek, "yaqin qo'shni" qidiruvlarni optimallashtirishga qodir.
bu maqsadli nuqtaga eng yaqin o'nta joyni topadi. Buning imkoniyati yana ma'lum bir operator sinfiga bog'liq.
GIN indekslari - bu bir nechta kalitlarni o'z ichiga olgan qiymatlarni boshqarish uchun teskari indekslar, masalan, massivlar. GiST singari, GIN ham foydalanuvchi tomonidan aniqlangan turli xil indeksatsiya strategiyalarini qo'llab-quvvatlashi mumkin va GIN indeksidan foydalanish mumkin bo'lgan operatorlar indekslash strategiyasiga qarab farq qiladi. Misol tariqasida, PostgreSQL-ning standart taqsimoti ushbu o'lchov operatorlari yordamida indekslangan so'rovlarni qo'llab-quvvatlaydigan bir o'lchovli massivlar uchun GIN operator sinflarini o'z ichiga oladi:
Ko'p ustunli indekslar
Do'stlaringiz bilan baham: |