表HyMoneyAccount 记录每个会员得到的历史积分,
表HyClub 记录会员资料,并记录会员在活动中能获得的最高积分
此段代码,每执行一次,会给表中每个符合条件的会员(未达到可以获得最积分HyTopMoney<DTMoney),增加3个积分
现在hyclub中数据大概8w条,执行起来,很慢,应该如何优化,才能提高执行效率呢??
set rs1=nothing
set rs1=server.CreateObject("adodb.recordset")
sql ="select id,hynumber,HyTopMoney from HyClub"
rs1.Open sql,conn
if Rs1.Recordcount>0 Then
while (not Rs1.eof)
hynumberee=rs1("hynumber") '会员名
HyTopMoney=rs1("HyTopMoney") '活动中能获得的最高积分
Set HyRs8=nothing
set HyRs8=server.CreateObject("adodb.recordset")
sql = "select AMoney from HyMoneyAccount where HyNumber ='" & HyNumberee & "'"
HyRs8.Open sql,conn,1,1
if HyRs8.recordcount>0 then
DTMoney=HyRs8("DTMoney")
If CDbl(DTopMoney)>CDbl(DTMoney) Then
set Temprs=nothing
set Temprs=server.CreateObject("adodb.recordset")
sql=""
sql="update HyMoneyAccount set DTMoney=DTMoney+3 where HyNumber='"&HyNumberee&"'"
Temprs.Open sql,conn
set Temprs=Nothing
End If
几W多条记录要循环,循环体内又连接数据库
其实你这种要求只要一条SQL就够了
update ma set DTMoney=DTMoney+3
from HyMoneyAccount ma inner join
HyClub c on ma.HyNumber=c.hynumber
where c.HyTopMoney>ma.DTMoney