J'utilise une fonction PL / pgSQL dans PostgreSQL 9.3 avec plusieurs requêtes complexes à l'intérieur:
create function f1()
returns integer as
$$
declare
event tablename%ROWTYPE;
....
....
begin
FOR event IN
SELECT * FROM tablename WHERE condition
LOOP
EXECUTE 'SELECT f2(event.columnname)' INTO dummy_return;
END LOOP;
...
INSERT INTO ... FROM a LEFT JOIN b ... LEFT JOIN c WHERE ...
UPDATE T SET cl1 = M.cl1 FROM M WHERE M.pkcols = T.pkcols;
...
end
$$ language plpgsql;
Si je courais EXPLAIN ANALYZE f1()
, je n'obtiens que le temps total, mais pas de détails. Existe-t-il un moyen d'obtenir des résultats détaillés pour toutes les requêtes de la fonction?
Si les requêtes dans la fonction ne devaient pas être optimisées par Postgres, je demanderais également une explication.
auto_explain.log_nested_statements
pourrait aider. Voir postgresql.org/docs/9.3/static/auto-explain.html