获取PostgreSQL查询的执行时间
PostgreSQL不是Transact-SQL。这是两件稍有不同的事情 在PostgreSQL中,这将与获取PostgreSQL查询的执行时间,sql,performance,postgresql,Sql,Performance,Postgresql,PostgreSQL不是Transact-SQL。这是两件稍有不同的事情 在PostgreSQL中,这将与 sql:/home/an/Desktop/dbms/query.sql:9: ERROR: syntax error at or near "@" LINE 1: DECLARE @StartTime datetime,@EndTime datetime 另一方面,测量查询时间不必如此复杂。有更好的方法: 中有一个\timing功能,用于测量客户端的查询时间(类似于SQLServerM
sql:/home/an/Desktop/dbms/query.sql:9: ERROR: syntax error at or near "@"
LINE 1: DECLARE @StartTime datetime,@EndTime datetime
另一方面,测量查询时间不必如此复杂。有更好的方法:
\timing
功能,用于测量客户端的查询时间(类似于SQLServerManagementStudio右下角的持续时间)衡量执行时间的方法多种多样,各有利弊。但无论你做什么,一定程度上的“测量问题”都是适用的。也就是说,测量本身可能会扭曲结果 1.
解释分析
您可以使用prepend报告整个查询计划,其中包含实际测量的估计成本时间。查询实际执行(具有所有副作用,如果有!)。适用于选择
,插入
,更新
,删除
检查我对您的查询的修改版本是否实际上更快:
解释分析
在.name上选择不同的born\u
从born_到b
其中日期'2012-01-30'-b.dob如果您指的是psql,而不是您正在编写的某些程序,请使用\?
获取帮助,请参阅:
EXPLAIN (ANALYZE, COSTS OFF, TIMING OFF)
然后得到如下输出:
\timing [on|off] toggle timing of commands (currently off)
我在我的SQL studio上测试了这个查询,只是在我的数据库中用一些东西替换了你的select distinct…
,它工作得很好。你用什么来执行这个查询?我在postgres中运行上面的查询!!:-/你到底想做什么?这似乎与Java或JDBC没有任何关系(从你的评论来看,甚至与MySql都没有关系).这是一个存储过程吗?MySQL和PostgreSQL是非常不同的东西(好像比较Teradata和Oracle来访问)。如果您使用的是PostgreSQL,那么您应该删除MySLQ标志:)@zyxwvu:那么,为什么在一个针对PostgreSQL但使用Microsoft SQL语法的问题中包含MySQL标记?您收到的错误消息是MySQL错误,而不是PostgreSQL错误。仅供参考\timing@filiperm最佳定义Delta
为double-precision
Th感谢Ank为这个问题的标题提供了简单的基本答案。我认为这是在postgres中显示时间最直接、最简单的方法。谢谢!这显示了服务器端时间还是客户端(延迟)?文档对此只字未提。@CrouchingKitten我在非常慢的互联网上进行了测试,得到了“0.261毫秒”“使用本地unix域套接字连接,以及”944.272 ms“:D通过TCP使用psql的慢速internet。因此它只能是客户端。@cruchingkitten:client-side-与EXPLAIN ANALYZE
报告的总执行时间相反,它在服务器上测量(没有网络延迟)。
EXPLAIN (ANALYZE, BUFFERS) YOUR QUERY HERE;
EXPLAIN (ANALYZE, COSTS OFF, TIMING OFF)
\timing [on|off] toggle timing of commands (currently off)
# \timing on
Timing is on.
# select 1234;
?column?
----------
1234
(1 row)
Time: 0.203 ms