我发现PostgreSQL中有两种时间类型:
谢谢。
- \timing:返回查询执行时间和从服务器传输数据到客户端所需的时间成本。
- explain analyze:返回查询执行时间。
谢谢。
\timing是在客户端测量的时间。
EXPLAIN ANALYZE是在服务器端测量的时间。
\timing更加真实一些,因为结果可能会受到网络传输速度的影响。EXPLAIN ANALYZE不太真实,因为您消除了网络速度的影响(当您调查一些奇怪的时间时可能很有趣),但它显示有关查询处理的详细信息。如果没有任何其他参数,则计时测量的开销很大(在最近的PostgreSQL版本中较少)。当您可以获得更加真实的时间时,您可以使用
EXPLAIN (ANALYZE, TIMING OFF) SELECT ...
测量时间以毫秒为单位 - 可接受的范围取决于使用情况 - 对于Web应用程序,少于50ms;对于桌面应用程序,少于200ms;对于快速分析,少于5秒。但查询速度通常取决于IO速度,因此如果您需要处理20GB表格聚合,则不能期望少于100秒的时间(这取决于需要处理多大的表格部分)。
\timing
将包括从服务器传输完整结果到客户端所需的时间。explain analyze
仅显示查询在服务器上执行所需的时间,而不将其发送到客户端(如手册中所述:http://www.postgresql.org/docs/current/static/sql-explain.html)。 - user330315