【发布时间】:2017-06-12 21:20:04
【问题描述】:
我有 batch 的 SQL 基准查询,我想执行并计算它们的时间。我不想想用 EXECUTE ANALYZE 命令获取执行计划。
基于此处建议的方法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 查询都返回多行。
如何解决这个问题?
【问题讨论】:
标签: postgresql benchmarking common-table-expression sqlperformance