使用ACCESS資料庫,查詢大約6W條記錄,然后將查詢結果系結到VSFLEXGRID, 查詢出來的結果只有30條
但耗時實在讓人無法接受,求高手指教!
代碼如下:
Dim tmpRS As New ADODB.Recordset
'sqlStr = "SELECT * FROM [tbDATA] WHERE ID IN (SELECT MAX(ID) FROM [tbDATA] GROUP BY Process_No) ORDER BY ID ASC" '耗時:2219ms
'sqlStr = "SELECT * FROM [tbDATA] WHERE ID IN (SELECT MAX(ID) FROM [tbDATA] GROUP BY Process_No)" '耗時:115ms
'sqlStr = "SELECT * FROM [tbDATA] WHERE ID IN (SELECT MAX(ID) FROM [tbDATA] GROUP BY Process_No) ORDER BY ID,Process_No ASC" '耗時:2219ms
'sqlStr = "SELECT * FROM [tbDATA] WHERE ID IN (SELECT MAX(ID) FROM [tbDATA] GROUP BY Process_No) ORDER BY Process_No ASC" '耗時:2729ms
sqlStr = "SELECT * INTO TempTB FROM [tbDATA] WHERE ID IN (SELECT MAX(ID) FROM [tbDATA] GROUP BY Process_No)" '耗時:2687ms 本想先將查詢結果放入一個臨時表,然后再排序系結
tmpRS.Open sqlStr, tmpCN(ch), 1, 1
Set VSFlexGrid3(ch).DataSource = tmpRS
上述代碼,查詢快的時候,系結就慢,查詢慢的時候,系結就慢
補充:VB環境下使用ADO查詢,ACCESS資料庫,ID為主鍵,有索引,其他列無索引
uj5u.com熱心網友回復:
查詢快的時候,系結就慢,查詢慢的時候,系結就快uj5u.com熱心網友回復:
create index xxx on tbDATA (Process_No,ID);uj5u.com熱心網友回復:
'sqlStr = "CREATE INDEX index_tt ON tbDATA (Process_No,ID)"'tmpCN(ch).Execute sqlStr
設定索引過之后再查詢 耗時:2253ms,沒有效果
系結之前先將記錄集排序,系結的就很快,70ms左右完成系結
但如果查詢時不排序,那么系結時,就要耗時2000ms以上
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/89480.html
標籤:Access
上一篇:mysql float double decimal 的區別
下一篇:mysql版本性能
