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_costpode 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.