日期:2014-05-19  浏览次数:20585 次

多个update执行一次和分开执行的速度问题!
Sql   Server   2000   +   VB.net  
用下面2种方法是先更新数据,竟然发现方法1比方法2慢很多,似乎不太合理,应该方法1较快才对啊!
new_dateArray里的内容很多,大概几千条。

方法1:
strSql   =   Nothing
For   w_K   =   0   To   new_dateArray.Count   -   1
        strSql   =   strSql   &   "UPDATE   Table_Test   SET   "
        strSql   =   strSql   &   "VALUE   =   1 "
        strSql   =   strSql   &   "   WHERE   ID=0 "
        strSql   =   strSql   &   "   AND   Time= ' "   &   CDate(new_dateArray.Item(w_K))   &   " ' "
Next
        sqlCmd   =   New   SqlCommand(strSql,   sqlConn)
        sqlCmd.ExecuteNonQuery()
        sqlCmd   =   Nothing
        strSql   =   Nothing
-------------------------------------
方法2:
strSql   =   Nothing
For   w_K   =   0   To   new_dateArray.Count   -   1
        strSql   =   "UPDATE   Table_Test   SET   "
        strSql   =   strSql   &   "VALUE   =   1 "
        strSql   =   strSql   &   "   WHERE   ID=0 "
        strSql   =   strSql   &   "   AND   Time= ' "   &   CDate(new_dateArray.Item(w_K))   &   " ' "
        sqlCmd   =   New   SqlCommand(strSql,   sqlConn)
        sqlCmd.ExecuteNonQuery()
        sqlCmd   =   Nothing
        strSql   =   Nothing
Next

------解决方案--------------------
当然每2个快,每条执行,sql语名加的太长了,要时间的
------解决方案--------------------
在一起执行就可以
------解决方案--------------------
理论上第一个快

实际上在我这里测试也是第一个快
------解决方案--------------------
循环次数少,1快,因为传送数据差不多,但一次编译一次执行 对 多次编译多次执行
循环次数增加,1网络传送比2慢,再增加网络传送起关键作用,当然1慢
改成 Time in 把后面的连成 a,b,c,d,e 的形式快一点,做起调存储过程更快
------解决方案--------------------
第一个快