Y a-t-il une différence? Je sais que les requêtes SQL ont leurs plans d'exécution mis en cache tout aussi bien que les fonctions.Performances PostgreSQL des fonctions SQL vs ad-hoc
Je Foud someone telling:
Performance est un problème, et nous soupçonnons la planification de la requête pourrait être une cause sous-jacente . J'ai réécrit les scripts de SQL ad-hoc à une fonction Postgres (CREATE FUNCTION) et nous avons vu la charge du serveur descendre un peu .
Mais pourquoi?
on m'a dit que les requêtes obtenir leur plan d'exécution mises en cache [ici] (https://stackoverflow.com/questions/46677509/postgresql-function-execution-plan-cache-principle/46678190?noredirect=1#comment80305222_46678190) –
@YevgeniyAfanasyev: C'est un malentendu. Le plan de requête pour les instructions SQL ad-hoc n'est pas mis en cache. Seulement pour les déclarations préparées. –
Droite. Je supposais que vous utilisiez des instructions préparées, car si vous réfléchissiez aux détails de la mise en cache des plans dans les fonctions, vous auriez déjà fait cela comme première étape pour réduire les coûts de planification. En outre, si la fonction appelée est une fonction SQL inlineable, elle peut être mise en cache indirectement lors de l'appel de fonctions plpgsql. –