PostgreSQL-də hansı indeks növləri mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Aşağıdakı əsas indeks növləri mövcuddur:
-
B-tree (B ağacı) - ən yaygın növ, ən çox istifadə olunan sorğular üçün uyğundur (bərabərlik, müqayisə, aralıq). Tarazlı ağaca əsaslanır.
-
Hash (Hash) - bərabərliyi (=) yoxlamaq üçün istifadə olunur. Belə sorğular üçün B-tree-dən daha sürətli, lakin müqayisələri və aralıqları dəstəkləmir. Açarın hash dəyərini və sətirə göstərici saxlayır.
-
GiST (Ümumi Axtarış Ağacı) - mürəkkəb məlumat tipləri üçün müxtəlif indekslər qurmağa imkan verən ümumi axtarış ağacı strukturu. Tarazlı ağaca əsaslanır.
-
SP-GiST (Məkan Bölümlü Ümumi Axtarış Ağacı) - GiST-in xüsusi versiyası, məlumatlar məkan üzrə bölünə bilər (məsələn, nöqtələr, düzbucaqlar). Nümunələr: k-d ağaclar, quadtrees.
-
GIN (Ümumi Tərs İndeks) - ümumi tərs indeks, əsasən, elementləri içərisində axtarış üçün istifadə olunur (məsələn, massivlər, JSONB). Tam mətn axtarışında geniş istifadə olunur.
-
BRIN (Blok Aralığı İndeksi) - blok aralığı indeksi. Çox böyük cədvəllər üçün uyğundur, təbii sıralanmış məlumatlar (məsələn, vaxt üzrə). Fiziki disk bloklarındakı dəyər aralığını indeksləşdirir.
-
Bloom (Bloom Filtri) - ənənəvi indeks deyil, ehtimolluq strukturu, elementin olmamasını sürətlə yoxlamaq üçün istifadə olunur. Çox böyük cədvəllərdə seçimi sürətləndirmək və ya əsas indeksə əlavə filtr kimi istifadə olunur.
İstifadə nümunələri:
- B-tree: ədədi sahələr, tarixlər, sətirlər üçün aralıq axtarış (
WHERE amount > 100). - Hash: birbaşa istifadə olunmur, çünki B-tree ümumiyyətlə daha sürətlidir.
- GiST: coğrafi indekslər (
gist(location)), tam mətn axtarış indeksləri (to_tsvector). - SP-GiST: ikidimensionlu məlumatlar üçün indekslər (
spgist(point)). - GIN: massivlər (
gin(tags)), JSONB (gin(data)), tam mətn axtarış. - BRIN: log cədvəllərində
timestampsahəsi üçün indeks, məlumatlar vaxt ilə sıralanıb. - Bloom: sütun dəstləri üçün indeks (
bloom(col1, col2, col3)) və dəyərlərin uyğun gəlmədiyini sürətlə yoxlamaq üçün.
İndeks növünün seçimi, sütunun məlumat növündən və optimallaşdırmaq istənilən sorğu növündən asılıdır.