El plan de consulta para consultas ad-hoc es no en caché, solo para sentencias preparadas
. Y las funciones PL/pgSQL manejan todas las sentencias SQL como sentencias preparadas internamente. (Con la notable excepción de SQL dinámico con EXECUTE
.) Cada uno para el alcance de la sesión actual, no más allá.
Entonces, las funciones PL/pgSQL (¡no las funciones SQL!) pueden ayudar con la ejecución repetida de consultas sofisticadas dentro de la misma sesión. Al igual que las declaraciones preparadas.
El software del cliente puede estar utilizando declaraciones preparadas de forma predeterminada. O el "protocolo de consulta extendida" , en el mismo sentido.
Relacionado:
La respuesta relacionada que comenzó el hilo en pgsql-general te refieres a:
Considere también el capítulo Planificación de almacenamiento en caché para PL/pgSQL en el manual.