Sobes.tech
Junior — Middle

O que pode fazer com que o PostgreSQL não utilize um índice ao realizar uma pesquisa por um campo específico?

sobes.tech IA

Resposta da IA

O PostgreSQL pode não usar um índice ao procurar por um campo específico por várias razões:

  • Baixa seletividade da consulta: se a condição de busca retorna uma grande percentagem de linhas, o planejador pode optar por uma varredura sequencial, pois é mais eficiente.
  • Tipos de dados ou operações incompatíveis com o índice: por exemplo, uso de funções ou operações que não suportam índice (como LIKE '%pattern') ou incompatibilidade de tipos de dados.
  • Falta de estatísticas ou estatísticas desatualizadas: se as estatísticas da tabela não estiverem atualizadas (ANALYZE), o planejador pode tomar uma decisão incorreta.
  • Uso de expressões não cobertas pelo índice: por exemplo, procurar por um campo calculado sem um índice funcional correspondente.
  • Parâmetros de configuração: por exemplo, um valor muito alto de random_page_cost pode influenciar a escolha do plano.

Exemplo: se você tem um índice no campo name, mas a consulta usa WHERE LOWER(name) = 'abc', e o índice não é funcional em LOWER(name), o índice não será utilizado.