Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Postgres Query execution time

Tags:

postgresql

In the MySQL command line interface, when you execute a query it will tell you how long the query took to execute after printing out the results.

In the Postgres command line interface (psql) it does not tell you. I know how to configure the logging so I can get the information from logs, but it would be more convenient to have it print to standard output like it does in MySQL.

Can this be done?

like image 836
NickJ Avatar asked Jul 15 '13 12:07

NickJ


People also ask

How do we turn on query execution time in PostgreSQL?

If you want server-side execution times that don't include the time to transfer the result to the client, you can set log_min_duration_statement = 0 in the configuration, then SET client_min_messages = log so you get the log info in the console. You can also use EXPLAIN ANALYZE to get detailed execution timings.

How long does a PostgreSQL query take?

In PostgreSQL, execution time for this query is 3.4 seconds, so optimization is required.

How make PostgreSQL query run faster?

Some of the tricks we used to speed up SELECT-s in PostgreSQL: LEFT JOIN with redundant conditions, VALUES, extended statistics, primary key type conversion, CLUSTER, pg_hint_plan + bonus.

What command turns on timing in PostgreSQL?

You can use \timing only with the command line client psql , since this is a psql command. It is a switch that turns execution time reporting on and off: test=> \timing Timing is on.


2 Answers

Use \timing as explained by "How can I time SQL-queries using psql?".

See also the manual for psql.

If you want server-side execution times that don't include the time to transfer the result to the client, you can set log_min_duration_statement = 0 in the configuration, then SET client_min_messages = log so you get the log info in the console.

You can also use EXPLAIN ANALYZE to get detailed execution timings. There's some timing overhead for this unless you use EXPLAIN (ANALYZE TRUE, TIMING FALSE), which is only in newer versions, and disables detailed timing to give only an aggregate execution time instead.

PgBadger, especially when combined with the auto_explain module, can provide useful aggregate statistics from log analysis.

Finally, there's pg_stat_statements, which can collect handy aggregate information on the running system.

like image 120
Craig Ringer Avatar answered Sep 22 '22 09:09

Craig Ringer


I think that EXPLAIN ANALYSE might be helpful to you

Syntax:

EXPLAIN ANALYSE query; 

Example;

EXPLAIN ANALYSE  SELECT  *  FROM    demotable; 

Output:

"Seq Scan on demotable  (cost=0.00..12.10 rows=210 width=356)                          (actual time=0.020..0.021 rows=8 loops=1)" "Planning time: 18.477 ms" "Execution time: 0.042 ms" 
like image 20
Vinoth Shankar Avatar answered Sep 20 '22 09:09

Vinoth Shankar