Junior — Middle
PostgreSQL-in müəyyən bir sahədə axtarış edərkən indeks istifadə etməməsinə nə səbəb ola bilər?
sobes.tech Süni İntellekt
AI-dan cavab
PostgreSQL müəyyən bir sahə üzrə axtarış zamanı indeksdən istifadə etməyə bilər, bunun bir neçə səbəbi var:
- Axtarışın aşağı seçiciliyi: əgər axtarış şərti çox böyük faiz sətiri geri qaytarırsa, planlaşdırıcı daha səmərəli olduğu üçün ardıcıl skan etməyi seçə bilər.
- İndeks ilə uyğun olmayan məlumat tipləri və ya əməliyyatlar: məsələn, indeks dəstəkləməyən funksiyalar və ya əməliyyatlar istifadə etmək (məsələn,
LIKE '%pattern') və ya məlumat tiplərinin uyğun olmaması. - Statistikaların olmaması və ya köhnəlmiş statistikalar: əgər cədvəl statistikası yenilənməyibsə (
ANALYZE), planlaşdırıcı yanlış qərar verə bilər. - İndeks ilə əhatə olunmayan ifadələrdən istifadə: məsələn, hesablanmış sahə üzərində axtarış, uyğun funksional indeks olmadan.
- Konfiqurasiya parametrləri: məsələn, çox yüksək
random_page_costdəyəri plan seçimini təsir edə bilər.
Nümunə: əgər name sahəsində indeksiniz varsa, lakin sorğu WHERE LOWER(name) = 'abc' istifadə edirsə və indeks LOWER(name) üçün funksional deyilsə, indeks istifadə olunmayacaq.