Junior — Middle
Постгрес SQL-дің нақты өріс бойынша іздеу жүргізген кезде индекс қолданбауына не себеп болуы мүмкін?
sobes.tech AI
AI-дан жауап
PostgreSQL белгілі бір өріс бойынша бірнеше себептермен индекс қолданбауы мүмкін:
- Сұраудың төмен селективтілігі: егер іздеу шарты көптеген жолдарды қайтарса, жоспарлаушы тізбектелген сканерлеуді таңдай алады, себебі ол тиімдірек.
- Деректер түрлері немесе операциялар, индекспен үйлеспейтін: мысалы, функцияларды немесе индекс қолдамайтын операцияларды қолдану (мысалы,
LIKE '%pattern'), немесе деректер түрлерінің сәйкессіздігі. - Статистика жоқтығы немесе ескірген статистика: егер кестенің статистикасы жаңартылмаса (
ANALYZE), жоспарлаушы дұрыс шешім қабылдамауы мүмкін. - Индекстелмеген өрістер бойынша өрнектерді қолдану: мысалы, есептелген өріске іздеу, егер оған функционалды индекс болмаса.
- Конфигурация параметрлері: мысалы,
random_page_costжоғары мәні жоспардың таңдауына әсер етуі мүмкін.
Мысал: егер сізде name өрісіне индекс болса, бірақ сұрау WHERE LOWER(name) = 'abc' қолданса, ал индекс LOWER(name) үшін функционалды емес болса, индекс қолданылмайды.