2012-11-22 92 views
2

我正在使用下面的代碼從表中檢索數據。 之後,我將結果數據綁定到網格。 問題與速度有關。此查詢花費將近2到3分鐘來執行後端處理,需要30到40秒。增加記錄集中查詢的執行時間(CursorLocation)

-----------目前代碼------------------

rs.ActiveConnection = con //con is connection 
con.Errors.Clear 
rs.CursorLocation = adUseServer 
rs.CursorType = adOpenDynamic 
rs.LockType = adLockOptimistic 
rs.StayInSync = True 
On Error Resume Next 
rs.Open strCmd //strCmd is query 

-------備用解決方案我嘗試使用客戶端---------------

rs.ActiveConnection = con //con is connection 
con.Errors.Clear 
rs.CursorLocation = adUseClient 
rs.CursorType = adOpenKeyset 
rs.LockType = adLockBatchOptimistic 
rs.StayInSync = True 
On Error Resume Next 
rs.Open strCmd //strCmd is query 

///結果:相同的速度

--------使用替代解決方案執行而不是Open recodset ---------------

com.ActiveConnection = con //con is connection 
com.CommandType = adCmdText 
com.CommandTimeout = 500 
com.CommandText = strCmd //strCmd is query 
con.Errors.Clear 
On Error Resume Next 
Set rs= com.Execute() 

//結果:速度快,但是當我嘗試在電網更新值,所顯示波紋管的錯誤:

「運行時錯誤‘3251’:當前記錄集不支持 updating.This可能是供應商的限制,或者是所選的鎖類型。「


回答

0

我認爲這可能是你的桌設置/查詢,而不是你的連接是造成問題。

確保WHERE,JOIN,& ORDER BY子句中列出的每個字段都被索引。

重新評估您正在創建的任何派生字段。我在前一天看到一個查詢,它將2個文本字段組合起來,然後在新的-unindexed-字段上進行排序。

如果你發佈你的查詢和你的表結構,它會給我一個更好的主意。