如何在PostgreSQL中获取执行时间

7
在plpgsql脚本中,我需要将最后一个查询的执行时间存储到一个变量中,以便于用于计算、显示和存储等多种用途。因为无法操作结果时间,所以psql的\timing选项并不能满足我的需求。你知道是否有像"get diagnostics"命令一样获取执行时间的方法(或者其他解决方法)吗?
get diagnostics my_var := EXECUTION_TIME;

我找不到其他比row_countresult_oid更好的选择...

1个回答

27

您可以在查询之前和之后比较clock_timestamp()

do $$
declare t timestamptz := clock_timestamp();
begin
 perform pg_sleep(random());
 raise notice 'time spent=%', clock_timestamp() - t;
end
$$ language plpgsql;

示例结果:

注意:耗时=00:00:00.59173


实际上我尝试过使用now(),因为它是事务时间,所以在之前和之后时间相同,但是使用clock_timestamp()就可以了!谢谢。 - Thomas Perrin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接