Junior — Middle
¿Qué puede hacer que PostgreSQL no utilice un índice al realizar una búsqueda en un campo específico?
sobes.tech AI
Respuesta de la IA
PostgreSQL puede no usar un índice al buscar en un campo específico por varias razones:
- Baja selectividad de la consulta: si la condición de búsqueda devuelve un gran porcentaje de filas, el planificador puede optar por un escaneo secuencial, ya que es más eficiente.
- Tipos de datos u operaciones incompatibles con el índice: por ejemplo, usar funciones u operaciones que no soportan índices (como
LIKE '%pattern') o incompatibilidad de tipos de datos. - Falta de estadísticas o estadísticas desactualizadas: si las estadísticas de la tabla no están actualizadas (
ANALYZE), el planificador puede tomar una decisión incorrecta. - Uso de expresiones no cubiertas por el índice: por ejemplo, buscar en un campo calculado sin un índice funcional correspondiente.
- Parámetros de configuración: por ejemplo, un valor demasiado alto de
random_page_costpuede influir en la elección del plan.
Ejemplo: si tienes un índice en el campo name, pero la consulta usa WHERE LOWER(name) = 'abc', y el índice no es funcional en LOWER(name), el índice no será utilizado.