[リストへもどる]
一括表示

投稿時間:2003/11/06(Thu) 18:41
投稿者名:ぴか
Eメール:
URL :
タイトル:
postgres<->VBでのアクセスについて
はじめまして。どなたか教えてください。

VB6.0(Win2000) <->  Postgres7.3(FreeBSD 4.7)
でアクセスしようとしています。
Select文が異常に遅いです。データ件数が3件、項目が2項目のテーブルに対して
"Select * From TBL"
この程度のSQLで数秒もかかってしまいます。
なんとか高速にする方法は無いでしょうか?
#PHPで同じSelect文を発行すると瞬間でデータを引っ張ってこれます。

以下、ソースです。
Dim DB_Object As Object                   'ODBC接続オブジェクト
Dim DB_RecordSet As ADODB.Recordset       'ODBCレコードセット

Set DB_Object = CreateObject("ADODB.Connection")
DB_Object.Open "dsn=PostgreSQL;uid=postgres;pwd=AAA;database=DBNAME"

Set DB_RecordSet = PubDB_Object.Execute("Select * From TBL;" )

投稿時間:2003/11/06(Thu) 23:35
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re: postgres<->VBでのアクセスについて
> VB6.0(Win2000) <->  Postgres7.3(FreeBSD 4.7)
> でアクセスしようとしています。
> Select文が異常に遅いです。データ件数が3件、項目が2項目のテーブルに対して
> "Select * From TBL"
> この程度のSQLで数秒もかかってしまいます。
> なんとか高速にする方法は無いでしょうか?

それは遅いですね。*のところを*ではなく各列名を指定した場合はどうでしょう?
後、ODBCドライバは何を使われていますか?ODBCドライバの設定をいろいろいじってみてはどうでしょう?

> #PHPで同じSelect文を発行すると瞬間でデータを引っ張ってこれます。

PHPの場合はネィティブでPostgreSQLにアクセスするので
ODBC経由より全然速いのは速いと思います。
(といってもやはり提示のSQLで数秒はありえないでしょう)

後、例えばAccess等、他のツールからPostgreSQLに接続しにいった場合は
どうですか?その場合は速いのでしょうか?

投稿時間:2003/11/10(Mon) 11:39
投稿者名:ぴか
Eメール:
URL :
タイトル:
Re^2: postgres<->VBでのアクセスについて
ご助言ありがとうございます。
早速試してみましたが、

> それは遅いですね。*のところを*ではなく各列名を指定した場合はどうでしょう?
直接項目を指定しましたが、変わりはありませんでした。

> 後、ODBCドライバは何を使われていますか?ODBCドライバの設定をいろいろいじってみてはどうでしょう?
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
からダウンロードしたものを使用しています。
PostgreSQL ODBC Driver 07.01.0006 日本語版(2001/07/13版)です。
ずいぶんと古いものしか無いのが気になっていますが、新しいものは出していない
ようですので、これを使用しています。

> 後、例えばAccess等、他のツールからPostgreSQLに接続しにいった場合は
> どうですか?その場合は速いのでしょうか?
いえ、Accessのデータ取り込みは10秒(!)もかかります。

ODBCの設定自体をいじり倒しましたが、変化なしです。
やはり、Postgresの現在のパージョンとODBCのバージョンがいけないのでしょうか?
なんだか、VBの掲示板で聞くべきことではなさそうな気がしてきました・・
どなたか実現されている方はいらしゃらないですかね?

あと、気になったのですが、SQL実行時に
Set DBRecordSet = DB_Object.Execute(StrSql)
を実行しているのですが、DBRecordSetの内容をウォッチでのぞいてみましたが
必要のない項目が腐るほど入っていました。
たとえば、DBRecordSet.properties は item が102 個もありました。(なぜ?)
また、それぞれのFields.item.properties の下にまたitemが9個もあったりと。
これらの必要の無さそうな項目にデータを代入するために遅くなっているのでは?
と考えたのですが・・・
ちなみに、Insert や Update は1秒かからず制御が帰ってきます。