sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo obligo a Postgres a usar un índice en particular?

Suponiendo que esté preguntando acerca de la función común de "sugerencias de índice" que se encuentra en muchas bases de datos, PostgreSQL no proporciona dicha función. Esta fue una decisión consciente tomada por el equipo de PostgreSQL. Puede encontrar una buena descripción general de por qué y qué puede hacer en su lugar aquí. Las razones son básicamente que es un truco de rendimiento que tiende a causar más problemas más adelante a medida que cambian los datos, mientras que el optimizador de PostgreSQL puede volver a evaluar el plan en función de las estadísticas. En otras palabras, lo que podría ser un buen plan de consulta hoy probablemente no será un buen plan de consulta para todos los tiempos, y las sugerencias de índice imponen un plan de consulta particular para todos los tiempos.

Como un martillo muy desafilado, útil para realizar pruebas, puede utilizar enable_seqscan y enable_indexscan parámetros Ver:

  • Examinando el uso del índice
  • enable_ parámetros

Estos no son adecuados para el uso en producción en curso . Si tiene problemas con la elección del plan de consulta, debe consultar la documentación para realizar un seguimiento de los problemas de rendimiento de la consulta. No se limite a configurar enable_ params y aléjate.

A menos que tenga una muy buena razón para usar el índice, Postgres puede estar tomando la decisión correcta. ¿Por qué?

  • Para tablas pequeñas, es más rápido hacer escaneos secuenciales.
  • Postgres no usa índices cuando los tipos de datos no coinciden correctamente, es posible que deba incluir conversiones apropiadas.
  • La configuración de su agenda podría estar causando problemas.

Vea también esta publicación antigua del grupo de noticias.