0
我在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」 取零時00分12秒,和 「數據= RS.GetRows」 00: 04:12。 在pgAdmin中,顯示所有10,000條記錄的時間不到一秒鐘。
當你使用'adOpenForwardOnly'與'adOpenStatic'時你有什麼改進嗎? –
此外,當您使用DSN時,它必須在進行連接之前轉到註冊表,並且速度較慢。 [請查看一些可能有所幫助的提示](http://www.techrepublic.com/blog/10-things/-10-ado-best-practices/) –
也嘗試ASynch處理。請參閱:https://support.microsoft.com/en-ca/kb/190988 –