比较方法,哪个更快?

oubao 2004-11-24 02:36:30
第一种方法
for i=1 to 10
Set rs = Server.CreateObject("Adodb.RecordSet")
sqlv = " SELECT * FROM TSARTNChkDtl "
rs.open sqlv, conn, 1, 3
rs.AddNew
rs("cditchid") = cditchid
rs("csaretchkid") = pay_id_all
rs("csaretchkdtlid") = no1
rs.update
rs.close
next
第二种方法
for i=1 to 10
sql = "insert TSARTNChkDtl (cditchid,csaretchkid,csaretchkdtlid) values ('"&CDITCHID&"','"&pay_id_all&"','"&no1&"')"
end if
conn.execute sql
next

哪种方法速度更快些?效率好些?
...全文
118 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋健华 2004-11-24
  • 打赏
  • 举报
回复
倒!
oubao 2004-11-24
  • 打赏
  • 举报
回复
OK,谢谢大家。
是是非非 2004-11-24
  • 打赏
  • 举报
回复
是的
oubao 2004-11-24
  • 打赏
  • 举报
回复
eglic(圪圪) :您的意思是说,现在在循环里不执行插入,只是在拼一个大的SQL语句,然后在循环外执行一次?
蒋健华 2004-11-24
  • 打赏
  • 举报
回复
怎么这么多人?
是是非非 2004-11-24
  • 打赏
  • 举报
回复
第二种方法是在循环内执行SQL语句
你需要执行10次,也就是说跟数据库交互10次

现在吧所有的SQL语句在循环里面连接好
最后只需要与数据库交互一次就可以了
oubao 2004-11-24
  • 打赏
  • 举报
回复
再请问,
sql=""
for i=1 to 10
sql = sql & "insert TSARTNChkDtl (cditchid,csaretchkid,csaretchkdtlid) values ('"&CDITCHID&"','"&pay_id_all&"','"&no1&"') "
next
conn.execute sql
为什么加一句sql=""就快了?
是是非非 2004-11-24
  • 打赏
  • 举报
回复
Set rs = Server.CreateObject("Adodb.RecordSet")
set rs.activeConntection = conn ‘设置活动连接
rs.locktype=3 '设置锁定类型,这里是悲观锁定
rs.cursortype=2 '设置光标类型,这里是动态光标
rs.cursorLoaction=1 '设置光标位置,使用客户端光标
起什么作用?
=======================
rs.batchUpDate 这句放在循环外起什么作用?

在循环里面多次Addnew,在循环外一个批量更新,减少与数据库交互次数
fenlin 2004-11-24
  • 打赏
  • 举报
回复
楼上的第四种方法最快
oubao 2004-11-24
  • 打赏
  • 举报
回复

rs.batchUpDate 这句放在循环外起什么作用?
oubao 2004-11-24
  • 打赏
  • 举报
回复
Set rs = Server.CreateObject("Adodb.RecordSet")
set rs.activeConntection = conn
rs.locktype=3
rs.cursortype=2
rs.cursorLoaction=1
起什么作用?
是是非非 2004-11-24
  • 打赏
  • 举报
回复
第五种方法
Set rs = Server.CreateObject("Adodb.RecordSet")
set rs.activeConntection = conn
rs.locktype=3
rs.cursortype=2
rs.cursorLoaction=1
sqlv = " SELECT top 0 * FROM TSARTNChkDtl "
rs.open sqlv
for i=1 to 10
rs.AddNew
rs("cditchid") = cditchid
rs("csaretchkid") = pay_id_all
rs("csaretchkdtlid") = no1
next
rs.batchUpDate
是是非非 2004-11-24
  • 打赏
  • 举报
回复
我觉得第四种快一点
是是非非 2004-11-24
  • 打赏
  • 举报
回复
第三种方法
Set rs = Server.CreateObject("Adodb.RecordSet")
set rs.activeConntection = conn
rs.locktype=3
rs.cursortype=2
rs.cursorLoaction=1
for i=1 to 10
sqlv = " SELECT top 0 * FROM TSARTNChkDtl "
rs.open sqlv
rs.AddNew
rs("cditchid") = cditchid
rs("csaretchkid") = pay_id_all
rs("csaretchkdtlid") = no1
rs.update
rs.close
next
第四种方法
sql=""
for i=1 to 10
sql = sql & "insert TSARTNChkDtl (cditchid,csaretchkid,csaretchkdtlid) values ('"&CDITCHID&"','"&pay_id_all&"','"&no1&"') "
next
conn.execute sql

蒋健华 2004-11-24
  • 打赏
  • 举报
回复
用rs操作数据库和用sql直接写有一个时间上的差别
安全性也稍稍有差别
tpf9000 2004-11-24
  • 打赏
  • 举报
回复
厉害,两个回复时间一样
若白师妹 2004-11-24
  • 打赏
  • 举报
回复
2
tpf9000 2004-11-24
  • 打赏
  • 举报
回复
应该差不多吧,第二种是不是快点呢?
蒋健华 2004-11-24
  • 打赏
  • 举报
回复
2
qiangtian 2004-11-24
  • 打赏
  • 举报
回复
你可以到数据库版问问

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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