我如何使用psql来计算SQL查询?


173

我想对我的PostgreSQL数据库的一些SQL查询进行基准测试。有什么办法可以使用psql来计时SQL查询吗?

+3

有关基准PostgreSQL的查询详情:http://dba.stackexchange.com/q/42012/9622 15 5月. 132013-05-15 22:29:39

236

通过输入只要开启定时:

\timing

+1

上传出的bash,psql'的'的 “-c” 选项执行不允许此设置。你可以像这样做: '''PSQL --O的/ dev/null的<< EOF \定时 选择1 EOF ''' 14 7月. 162016-07-14 17:38:46

+1

或做'PSQL -c '\定时' -c'select 1'' 24 8月. 172017-08-24 02:11:57


60

定时可以与\timing在PSQL提示被接通(如迦勒已经说过)。

如果你是在8.4或以上,you can add an optional on/off argument to \timing,如果你想能够set timing on in .psqlrc它可以是有益的 - 那么你可以在脚本中设置\timing on明确,其中纯\timing否则会切换它关闭


1

的时间如果您要连接到远程服务器,则返回\timing还包括网络延迟。

如果你不想要这个,也不需要查询输出,最好使用EXPLAIN ANALYZE,它会输出带有计划器估计值的查询计划加上实际执行时间。

例如,EXPLAIN ANALYZE SELECT foo from bar ;

  0

...唯一的问题是您没有收到正常的查询输出。 17 11月. 172017-11-17 04:56:18

  0

使用'explain analyze'产生的时间几乎是我在使用'\ timing'时看到的时间的两倍,这与我期望的基于这里有关网络延迟的评论相反。我怀疑正常执行'analyze'会增加查询时间。根据这些文档,我认为'解析(分析,时序关闭)选择foo FROM bar'会给你更多有用的时间信息。有关详细信息,请参见https://www.postgresql.org/docs/9.6/static/sql-explain.html。 05 12月. 172017-12-05 14:53:33