Sobes.tech
Junior — Middle

Постгрес SQL-дің нақты өріс бойынша іздеу жүргізген кезде индекс қолданбауына не себеп болуы мүмкін?

sobes.tech AI

AI-дан жауап

PostgreSQL белгілі бір өріс бойынша бірнеше себептермен индекс қолданбауы мүмкін:

  • Сұраудың төмен селективтілігі: егер іздеу шарты көптеген жолдарды қайтарса, жоспарлаушы тізбектелген сканерлеуді таңдай алады, себебі ол тиімдірек.
  • Деректер түрлері немесе операциялар, индекспен үйлеспейтін: мысалы, функцияларды немесе индекс қолдамайтын операцияларды қолдану (мысалы, LIKE '%pattern'), немесе деректер түрлерінің сәйкессіздігі.
  • Статистика жоқтығы немесе ескірген статистика: егер кестенің статистикасы жаңартылмаса (ANALYZE), жоспарлаушы дұрыс шешім қабылдамауы мүмкін.
  • Индекстелмеген өрістер бойынша өрнектерді қолдану: мысалы, есептелген өріске іздеу, егер оған функционалды индекс болмаса.
  • Конфигурация параметрлері: мысалы, random_page_cost жоғары мәні жоспардың таңдауына әсер етуі мүмкін.

Мысал: егер сізде name өрісіне индекс болса, бірақ сұрау WHERE LOWER(name) = 'abc' қолданса, ал индекс LOWER(name) үшін функционалды емес болса, индекс қолданылмайды.