2
我有一個批處理 SQL基準查詢,我想執行並計算他們的時間。我不要想要使用命令EXECUTE ANALYZE獲取執行計劃。如何基準一組PostgreSQL查詢?
基礎上提出這一方法在這裏Get execution time of PostgreSQL query 我寫了每個查詢包含以下代碼
-------------------------
Query = 'Q1';
StartTime := clock_timestamp();
PERFORM <** Query 1 goes here **>
EndTime := clock_timestamp();
Duration := 1000 * (extract(epoch from EndTime) - extract(epoch from StartTime));
INSERT INTO execution_tests VALUES (Query, StartTime, EndTime, Duration);
-------------------------
我同時使用的,而不是SELECT執行查詢,並丟棄結果的過程。
這適用於簡單的查詢,但我有很多具有WITH子句的查詢。根據說明書
對於WITH查詢,請使用PERFORM,然後將查詢放在括號中。 (在這種情況下,查詢只能返回一行)。
但是,我需要基準測試的所有WITH查詢返回多行。
如何解決這個問題?
太好了!謝謝 !如何在RAISE INFO後刪除CONTEXT消息?我已經嘗試了ALTER DATABASE test3 SET log_error_verbosity = TERSE;但沒有工作。附:我正在執行pgAdmin –
@EstebanZimanyi不確定你的意思。這只是一個例子。據我瞭解,你想存儲執行時間到表... – Abelisto
確實,但它也將是很好的(不一定在這個特殊的例子)刪除所有消息,如「上下文:PL/pgSQL函數test_queries()線每當在執行長腳本時在屏幕上顯示消息時,例如基於具有不同比例因子的長批次查詢來進行基準測試,「在RAISE處爲262」。有沒有辦法做到這一點 ? –