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

¿No hay almacenamiento en caché del plan de ejecución para SQL dinámico en PostgreSQL 9.4?

Por documentación:

Esa es una característica razonable . La naturaleza de una consulta dinámica es que cambia su estructura de una llamada a otra.

Si desea llamar a la misma consulta repetidamente (opcionalmente con diferentes parámetros), use declaraciones preparadas :

O use código SQL simple (no dinámico) dentro de las funciones plpgsql, que también se tratan como declaraciones preparadas.

En tu caso , podría ser mejor PREPARE consultas de forma dinámica. Tuvimos un caso muy similar aquí:

Además, es extremadamente es poco común que una consulta dedique 1,4 segundos a la planificación y solo 0,1 segundos a la ejecución. Puede valer la pena investigar. Puede haber formas de optimizar. Como con join_collapse_limit :

Relacionado: