Saya menggunakan fungsi PL / pgSQL di PostgreSQL 9.3 dengan beberapa pertanyaan kompleks di dalamnya:
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;
Jika saya berlari EXPLAIN ANALYZE f1()
, saya hanya mendapatkan total waktu, tetapi tidak ada detail. Apakah ada cara saya bisa mendapatkan hasil terperinci untuk semua pertanyaan dalam fungsi?
Jika pertanyaan dalam fungsi tidak dioptimalkan oleh Postgres, saya juga akan meminta penjelasan.
auto_explain.log_nested_statements
mungkin membantu. Lihat postgresql.org/docs/9.3/static/auto-explain.html