如何从命令行使用 psql 为 SQL 查询计时?

Han*_*zel 1 postgresql performance psql query-performance

已经有一个问题“如何使用 psql 为 SQL 查询计时? ”但我缺少如何从命令行执行此操作的答案。如何从命令行运行带有(可选)计时\timing [on|off]的脚本- 请不要在脚本中运行?

Erw*_*ter 5

你可以使用shell命令 time

postgres@db:$ time psql db -c 'SELECT 1'
 ?column?
----------
        1
(1 row)


real    0m0.108s
user    0m0.040s
sys     0m0.032s
Run Code Online (Sandbox Code Playgroud)

或者,要将元命令与 SQL 命令结合使用,您可以通过管道将字符串传递给 psql:

postgres@db:~/script$ echo '\timing \\ SELECT 1;' | LANG=C psql
Timing is on.
 ?column?
----------
        1
(1 row)

Time: 0.000 ms
Run Code Online (Sandbox Code Playgroud)

根据文档:

特殊序列\\(两个反斜杠)标记参数的结束并继续解析 SQL 命令(如果有)。这样 SQL 和 psql 命令可以在一行中自由混合。但无论如何,元命令的参数不能超出行尾。

  • `time` 命令将测量整个脚本而不是每个查询。受到第二个建议的启发:`{ echo '\timing on;'; cat file.sql } |psql`。 (3认同)