NextRecordset和GetRows是RecordSet的两个属性对提高批量查询速度很有效果大家可能用的很少分享一下这两个方法的用法
GetRows方法将RecordSet记录集提取到一个二维数组中我们对RecordSet数据的行为就转移到该数组可以早早的断开纪录集不用再使用源数据操作rsmovnext while not rseof等可以省掉
NextRecordset方法一次提交多个查询形成多个RecordSet结果集的情况下提供一个离开当前工作的RecordSet转移到下一个RecordSet的方法主要是用在多个select形成的结果集的情况示例如下
查询记录
set rs=connexecute(“select CaCaCaCa from TableA select CbCbCbCbCb from TableB”)
‘执行后将产生两个select的结果集当前第一个select的RecordSet处于激活状态
arrA=rsGetRows’取得第一个查询结果的二维数组
set rs=rsNextRecordset‘激活下一个RecordSet
arrB=rsGetRows’取得第二个查询结果的二维数组
set rs=nothing‘释放数据库对象
这样我们所有关于数据库的数据提取完成用最早的时间释放数据库资源
注意GetRows方法得到的数组第一维代表列第二维代表行
Fori=toUBound(arrA)
responsewrite(“<tr>”)
responsewrite(“<td>字段”&arrA(i)&“</td>”)
responsewrite(“<td>字段”&arrA(i)&“</td>”)
responsewrite(“<td>字段”&arrA(i)&“</td>”)
responsewrite(“<td>字段”&arrA(i)&“</td>”)
responsewrite(“</tr>”)
Next
responsewrite(“</table>”)
’第二个select表循环
responsewrite(“<p>表二</p><table>”)
Fori=toUBound(arrB)
responsewrite(“<tr>”)
responsewrite(“<td>字段”&arrB(i)&“</td>”)
responsewrite(“<td>字段”&arrB(i)&“</td>”)
responsewrite(“<td>字段”&arrB(i)&“</td>”)
responsewrite(“<td>字段”&arrB(i)&“</td>”)
responsewrite(“<td>字段”&arrB(i)&“</td>”)
responsewrite(“</tr>”)
Next
responsewrite(“</table>”)
优点
使用NextRecordSet可以处理多个select语句一次发送形成的结果集减少网络流量必定加快速度!
使用GetRows将记录集提取到数组中(内存操作因此记录集不能太大)用内存的数组工作而且省掉eofMoveNext等判断速度更快!
最最主要的我们利用上二者一次性将所有的数据提完快速断开数据库连接和销毁建立的RecordSet数据库对象大大减少网络流量!性能自然要提高很多!