Estoy usando una función PL / pgSQL en PostgreSQL 9.3 con varias consultas complejas dentro:
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 corrí EXPLAIN ANALYZE f1()
, solo obtengo el tiempo total, pero no detalles. ¿Hay alguna manera de obtener resultados detallados para todas las consultas en la función?
Si Postgres no optimizara las consultas en la función, también pediría una explicación.
auto_explain.log_nested_statements
podría ayudar. Ver postgresql.org/docs/9.3/static/auto-explain.html