我用类似下面的程序测试ado
for i=0 to rs.recordcount-1 strSql = "select * from xxx where personno='" & rs!personNo & "'"
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
rs1.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdText Set rs2 = New ADODB.Recordset
rs2.CursorLocation = adUseClient
rs2.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdText If rs2.RecordCount < 1 Then rs2.AddNew
rs2("PersonNo") = rs1("PersonNo")
rs2("PersonID") = rs1("PersonID")
rs2("Photo") = rs1("Photo") '是一张图片
rs2.Updatenext结果是1000条记录左右速度还可以,此后越来越慢,查看资源使用情况CPU使用接近100,内存使用越来越多.
是不是ado效率太低,没释放内存,不知如何提高效率?
for i=0 to rs.recordcount-1 strSql = "select * from xxx where personno='" & rs!personNo & "'"
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
rs1.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdText Set rs2 = New ADODB.Recordset
rs2.CursorLocation = adUseClient
rs2.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdText If rs2.RecordCount < 1 Then rs2.AddNew
rs2("PersonNo") = rs1("PersonNo")
rs2("PersonID") = rs1("PersonID")
rs2("Photo") = rs1("Photo") '是一张图片
rs2.Updatenext结果是1000条记录左右速度还可以,此后越来越慢,查看资源使用情况CPU使用接近100,内存使用越来越多.
是不是ado效率太低,没释放内存,不知如何提高效率?
解决方案 »
- VB.NET 从6.0移植过来的 应该是有些语句不对
- 我想转让部分程序的源代码,谁能告诉我在那个地方有这样的交易
- vb mscomm检测信号,串口新手在线等
- 新人求助,vb导出数据库某张表至文本文件
- VB中如何将数据库里的FLOAT类型数据取相同长度的小数点后位数
- 请问各位高手如何修改MSFlexGrid1表中数据。现在我可以修改,但为什么在数据库表中还是原先数据,没有修改成功呢?急盼,请各位高手快快
- 函数调用!!!
- 简单问题
- ADO: 可否在已有的记录集中再做一次查询
- 在VB中怎样显示gif动画?
- 一个很不错的学习资料网站,有很多教学视频资料下载,晚了就没了.
- 请教,怎样才可以将Image控件浮在ToolBar上面。
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
for i=0 to rs.recordcount-1 strSql = "select * from xxx where personno='" & rs!personNo & "'" rs1.CursorLocation = adUseClient
if rs1.state=1 then rs1.close
rs1.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdText
rs2.CursorLocation = adUseClient
if rs2.state=1 then rs2.close
rs2.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdText If rs2.RecordCount < 1 Then rs2.AddNew
rs2("PersonNo") = rs1("PersonNo")
rs2("PersonID") = rs1("PersonID")
rs2("Photo") = rs1("Photo") '是一张图片
rs2.Updatenext
rs1.close
rs2.close
set rs1=nothing
set rs2=nothing
况且你的2个查询又都写在循环里面,不慢才怪,特别是还有图片!!
即使rs1,rs2都要用,但是放在循环里每次去定义有必要吗?放在循环外一次定义即可
rs1.close
rs2.close
set rs1=nothing
set rs2=nothing
这样也不行!!!
,PersonID=b.PersonID
,Photo=b.Photo
from 表1 a inner join 表2 b on a.personno=b.personNo
Set rs1 = New ADODB.Recordset
rs1.CursorLocation = adUseClient
rs1.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdTextSet rs2 = New ADODB.Recordset
rs2.CursorLocation = adUseClient
rs2.Open strsql, strcon1, adOpenStatic, adLockOptimistic, adCmdTextfor i=0 to rs.recordcount-1
rs1.filter="personno='" & rs!personNo & "'"
rs2.filter="personno='" & rs!personNo & "'" If rs2.RecordCount < 1 Then rs2.AddNew
rs2("PersonNo") = rs1("PersonNo")
rs2("PersonID") = rs1("PersonID")
rs2("Photo") = rs1("Photo") '是一张图片
rs2.Updatenext