私はPostgreSQLデータベースにビューを持っています。 pgAdminでビューを実行するのは非常に高速です(10,000レコード)。しかし、 "Select * from myView;"を実行するとVBAから非常に遅いです。 ADOとODBCを使用してデータベースに接続します。誰かが私に事をスピードアップする方法のヒントを与えることができますか?Excel VBAからPostgreSQLデータベースへの接続が遅い
小さな例:
Sub TEST()
Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim Data As Variant
Dim SQL As String
Dim ConStr As String
ConStr = "Server=11.22.33.44;" & _
"DSN=PostgreSQL35W 32bit;" & _
"UID=xxx;" & _
"PWD=xxx;" & _
"Database=xxx;" _ &
"Port=5432;" & _
"CommandTimeout=12"
SQL = "Select * From myView;"
Debug.Print Now()
CN.ConnectionString = ConStr
CN.Open
Debug.Print Now()
RS.ActiveConnection = CN
RS.Source = SQL
RS.CursorType = adOpenStatic
RS.LockType = adLockReadOnly
Debug.Print Now()
RS.Open
Debug.Print Now()
Data = RS.GetRows
Debug.Print Now()
RS.Close
CN.Close
Set RS = Nothing
Set CN = Nothing
End Sub
これは出力が得られる:
10/08/2016 16:14:26
10/08/2016 16:14:26
10/08/2016 16:14:26
10/08/2016 16:14:38
10/08/2016 16:18:50
"RS.Openは" 0時00分12秒を要し、そして "データ= RS.GetRows" 00れます。 04:12。 pgAdminでは、10,000レコードすべてを表示するのに1秒未満かかりません。
'adOpenForwardOnly'と' adOpenStatic'を使用すると改善が見られますか? –
また、DSNを使用する場合は、接続を確立する前にレジストリに移動しなければならず、処理が遅くなります。 [役立つヒントについてはこれを確認してください] –
ASynch処理も試してみてください(http://www.techrepublic.com/blog/10-things/-10-ado-best-practices/)。参照:https://support.microsoft.com/en-ca/kb/190988 –