我有一批SQL基准查询需要执行并计算它们的时间。我不想使用EXECUTE ANALYZE命令获取执行计划。
根据这里建议的方法 Get execution time of PostgreSQL query,我编写了一个包含以下代码的过程来执行每个查询:
根据这里建议的方法 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);
-------------------------
我使用PERFORM而不是SELECT来执行查询并丢弃结果。
这对于简单查询有效,但我有许多带有WITH子句的查询。根据手册
对于WITH查询,请使用PERFORM然后将查询放在括号中。 (在这种情况下,查询只能返回一行。)
但是,我需要测试性能的所有WITH查询都返回多行。
如何解决这个问题?
psql
的功能:https://www.depesz.com/2008/07/12/suppressing-context-lines-in-psql/ - Abelisto