From: | Rainer Bauer <usenet(at)munnin(dot)com> |
---|---|
To: | pgsql-odbc(at)postgresql(dot)org |
Subject: | Why is UseDeclareFetch so slow? |
Date: | 2007-06-22 15:06:11 |
Message-ID: | csln73hi8pu9rlglofd6rikde0ss9199fg@4ax.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
Hello,
based on the problem I had here
<http://archives.postgresql.org/pgsql-performance/2007-06/msg00461.php>
I thought it would be interesting to know why UseDeclareFetch is slowing my
query down dramatically.
I have a table containing 50 tuples and retrieve all 50 tuples with a bound
column select statement:
SELECT * FROM tblItem WHERE intItemIDCnt = ?
This takes 8 seconds (over a slow DSL connection with 150ms ping). Tom Lane
suggested enabling UseDeclareFetch and the performance drop was significant:
Instead of 8 seconds, the query now takes 30-32 seconds. I also tested
enabling UseServerSidePrepare (without UseDeclareFetch) and the query was
executed in 7 seconds.
After rewriting the query to use an IN clause it now works perfect:
SELECT * FROM tblItem WHERE intItemIDCnt IN (...)
The result is retrieved in 400ms (UseServerSidePrepare=950ms and
UseDeclareFetch=1242ms).
The only thread I found discussing the UseDeclareFetch/UseServerSidePrepare
options was <http://archives.postgresql.org/pgsql-odbc/2006-10/msg00051.php>.
So my questions are
1) Is there any chance the driver itself could be enhanced like Dimitri
suggested here:
<http://archives.postgresql.org/pgsql-performance/2007-06/msg00512.php>?
2) When should UseServerSidePrepare be used?
3) When should UseDeclareFetch be used?
Rainer
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Wesley | 2007-06-25 16:28:34 | Re: Using the PostgreSQL ODBC driver for another database |
Previous Message | Mark Cave-Ayland | 2007-06-22 08:29:44 | Re: Proposal for new pgsqlODBC feature - hiding tables inaccessible to the current user |