İçinde birkaç karmaşık sorguları ile PostgreSQL 9.3 PL / pgSQL işlevini kullanıyorum:
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;
Eğer koştuysam EXPLAIN ANALYZE f1(), sadece toplam süreyi alıyorum, ama detay yok. İşlevdeki tüm sorgular için ayrıntılı sonuçlar almamın bir yolu var mı?
İşlevdeki sorguların Postgres tarafından optimize edilmemesi gerekiyorsa, bir açıklama da isterim.
auto_explain.log_nested_statementsyardımcı olabilir. Bkz. Postgresql.org/docs/9.3/static/auto-explain.html