📄 从.dbf到.mdb查找更新速度慢.txt
字号:
对于这个问题,我想应该是因为你在第一次向new.mdb中添加old1.dbf时,是逐条添加,7000多条记录用二十多秒是比较正常的,但是在你用old2.dbf更新new.mdb时,因为你每更新一条记录都要使用select语句查找stu_ID号,这相当于你每更新一条记录,就又对new.mdb库查找了一遍,根据查找的平均时间,也是遍历全记录的一半左右,8000多条记录,就是你又对new.mdb遍历了8000多遍,所以你第二次用时六七分钟也是有可能的。
如果你想提高速度,你可以先对old2.dbf和new.mdb以stu_ID进行相同升序或降序排序,然后从头开始,利用比较插入法:如下
if old2.stu_ID>new.stu_ID then '如果old2.stu_ID大,不用插入,new记录后移
new.skip
else if old2.stu_ID new.update(old2.stu_ID)
new.skip
old2.skip
end if
end if
end if
利用这个方法可以所用的平均时间就是对old2和new遍历一遍,一共用两遍就可以完成估计大概用时在50秒以内。但是排序可能要花去一定的时间,你可以比较一下,看这种方法是否可以节省时间。
<END>
我想问题在于你在循环体内打开Recordset的缘故。即:
rs.Open "SELECT * FROM tblNew WHERE stu_ID='" & Trim(tempstuID) & "'"
使用ado打开数据比较慢(比DAO慢),特别RS的游标类型是客户端游标时。
事实上你可以在循环体外打开rs,如下:
rs.Open "Select * from tblNew"
然后在循环体内使用Find方法查找是否有满足条件的记录:
rs.MoveFirst '在ADO中,这句不可少
rs.Find "stu_ID ='" & tempstuID & "'"
If rs.EOF Then
'添加记录
Else
'更新记录
End If
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -