Thread: odbc/ado problems

odbc/ado problems

From
Kroh István
Date:
Hi all!

I'm new here, so hello to everybody!

I'm in a deep truble using postgesSQL 7.2.0 on a low-end pc with SUSE 8. I'm
using some databases from that pc through odbc (7.3.200). Until now i had no
problems with this solution, everithing worked fine. But today i wrote a
small app, that converts/copies some data from a database to an other
database.

During this work i wrote a simple query as follows:
select pers_driving_license from person where pers_id=23456

This should return a single varchar(20) field. Running this query over
ADO/ODBC from a Delphi app tooks 50-100 secs. If i run this from pgAdmin II.
it takes some msecs.

The output of explain is:
Index Scan using person_id_index on person (cost=0.00..3.14 rows=1 width=4)

Any idea?

Thanks in advance: steve


Re: odbc/ado problems

From
"Merlin Moncure"
Date:
> I'm new here, so hello to everybody!
>
> I'm in a deep truble using postgesSQL 7.2.0 on a low-end pc with SUSE 8.
> I'm
> using some databases from that pc through odbc (7.3.200). Until now i had
> no
> problems with this solution, everithing worked fine. But today i wrote a
> small app, that converts/copies some data from a database to an other
> database.
>
> During this work i wrote a simple query as follows:
> select pers_driving_license from person where pers_id=23456
>
> This should return a single varchar(20) field. Running this query over
> ADO/ODBC from a Delphi app tooks 50-100 secs. If i run this from pgAdmin
> II.
> it takes some msecs.

Question: what is your Delphi database driver?  If you are using the BDE, that might be your problem.  Try installing
andusing the ZeosLib toolkit. 

http://www.zeoslib.org

Merlin

Re: odbc/ado problems

From
"Merlin Moncure"
Date:
> thanks for the quick answer! My db driver is the native MS ADO, and
from
> Delphi i use the AODExpress components which are wrapper classes to
reach
> the ActiveX components from delhpi. The strange behaviour of that
query
> is,
> that all other queries executed in this environment are running fast,
> except
> this one. First there was any index on that table (appr. 40.000
records),
> and i thought that maybe this is my problem. Then i made this index,
but
> this hasn't solved my problem.
> Now i think that maybe the odbc driver makes something with my query?
Can
> this happen?

Possible.  I would turn on statement logging on the server and make sure
the query is the way you wrote it in the app.  The driver might be doing
something like pulling all the data and attempting a client side filter.
Otherwise you may be looking at a casting problem of some sort.

To turn on logging, set statement log to 'all' in your postgresql.conf
file.  You may need to start the server manually so you can determine
where the log goes (logging to terminal is often the easiest to work
with).

If you are writing Delphi applications, you really should check out
Zeos.  It utilizes native drivers to connect to the database...it's
really, really fast and supports all the Delphi controls (and free!).

Merlin