Tôi đang sử dụng chức năng PL / pgSQL trong PostgreSQL 9.3 với một số truy vấn phức tạp bên trong:
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;
Nếu tôi chạy EXPLAIN ANALYZE f1()
, tôi chỉ nhận được tổng thời gian, nhưng không có chi tiết. Có cách nào để tôi có thể nhận kết quả chi tiết cho tất cả các truy vấn trong hàm không?
Nếu các truy vấn trong hàm không được tối ưu hóa bởi Postgres, tôi cũng sẽ yêu cầu một lời giải thích.
auto_explain.log_nested_statements
có thể giúp. Xem postgresql.org/docs/9.3/static/auto-explain.html