VB Access group by,order by查询速度超慢,求指点优化

lorelei2005 2018-05-05 11:46:30
使用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为主键,有索引,其他列无索引
...全文
1547 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2018-05-05
  • 打赏
  • 举报
回复
create index xxx on tbDATA (Process_No,ID);
lorelei2005 2018-05-05
  • 打赏
  • 举报
回复
查询快的时候,绑定就慢,查询慢的时候,绑定就快
lorelei2005 2018-05-05
  • 打赏
  • 举报
回复
'sqlStr = "CREATE INDEX index_tt ON tbDATA (Process_No,ID)" 'tmpCN(ch).Execute sqlStr 设置索引过之后再查询 耗时:2253ms,没有效果 绑定之前先将记录集排序,绑定的就很快,70ms左右完成绑定 但如果查询时不排序,那么绑定时,就要耗时2000ms以上

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧