Search Postgresql Archives

Re: Different execution time from psql and JDBC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andreas Hartmann wrote:
Dear postgresql community,

I have a quite complex statement. When I execute it directly via
psql, the execution time is approx. 2000 ms.

When I execute it via JDBC (Apache Cocoon), the execution time
is either 600..1000 ms or approx. 10.000 ms, based on a certain
value in a table.


An interesting point is that the value has a big impact on the JDBC execution time, but the psql execution time is not affected at all.

This suggests to me the problem is with a parametered query. If in psql I have two queries:
SELECT * FROM people WHERE surname='Huxton';
SELECT * FROM people WHERE surname='Smith';
If the statistics suggest there are many Smiths, then I might get two different plans.
With a parameterised query:
SELECT * FROM people WHERE surname=?
The planner has to come up with one plan that will suit all cases.


You can simulate this with PREPARE ... EXECUTE from psql - see if that does it.

Is there a way to output the query plan (like EXPLAIN ANALYZE)
in the log files? How can I trace down the problem?

You can turn on DEBUG_PRINT_PARSE - see the runtime configuration for details. This doesn't exactly produce an EXPLAIN but it will let you compare the two plans.


--
  Richard Huxton
  Archonet Ltd

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
     joining column's datatypes do not match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux