ฉันใช้ฟังก์ชั่น PL / pgSQL ใน PostgreSQL 9.3 พร้อมกับคำสั่งที่ซับซ้อนหลายอย่างภายใน
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;
ถ้าฉันวิ่งEXPLAIN ANALYZE f1()
ฉันจะได้เวลาทั้งหมดเท่านั้น แต่ไม่มีรายละเอียด มีวิธีที่ฉันสามารถรับผลลัพธ์โดยละเอียดสำหรับคำค้นหาทั้งหมดในฟังก์ชันได้หรือไม่
หาก Postgres ไม่ควรปรับการค้นหาในฟังก์ชั่นฉันจะขอคำอธิบายด้วย
auto_explain.log_nested_statements
อาจช่วย ดูpostgresql.org/docs/9.3/static/auto-explain.html