主题:如何改进下面代码,以提高更新速度.急!
连编后速度会变慢,不知什么原因? 连编前进行调试速度很快
如何改进下面代码,以提高更新速度.
目的主要是想用xsdjb表中树材种,等级,类别,材长x,材长d,径级x,径级d与xsjscjb表相同时的单价替换xsjscjb表中的单价记录,以计算出xsjscjb表中的金额
下面的代码在xsdjb表只有40条记录,xsjscjb表只有10条记录的情况下,运行也要8-10秒,速度太慢.
SELECT xsdjb.树材种,xsdjb.等级,xsdjb.类别,xsdjb.材长x,xsdjb.材长d,xsdjb.径级x,xsdjb.径级d,xsdjb.单价;
FROM xsdjb where xsdjb.文件号=xsdjwjh; &&&&GROUP BY xsdjb.代码
into array lsxsdjsz &&&ORDER BY xsdjb.代码
**************
update tz!xsjscjb set 单价=0 where xsjscjb.结算单号 =scgzjsdh
xsszgs=alen(lsxsdjsz,1)
xsjsbcbl=1
for viv=1 to alen(lsxsdjsz,1)
xsjsbcbl1='"'+lsxsdjsz(xsjsbcbl,1)+'"'
xsjsbcbl7='"'+lsxsdjsz(xsjsbcbl,2)+'"'
xsjsbcbl8='"'+lsxsdjsz(xsjsbcbl,3)+'"'
xsjsbcbl2=lsxsdjsz(xsjsbcbl,4)
xsjsbcbl3=lsxsdjsz(xsjsbcbl,5)
xsjsbcbl4=lsxsdjsz(xsjsbcbl,6)
xsjsbcbl5=lsxsdjsz(xsjsbcbl,7)
xsjsbcbl6=lsxsdjsz(xsjsbcbl,8)
update tz!xsjscjb set xsjscjb.单价=xsjsbcbl6 where xsjscjb.结算单号 =scgzjsdh and alltrim(xsjscjb.树材种)=alltrim(&xsjsbcbl1) and ;
alltrim(xsjscjb.等级)=alltrim(&xsjsbcbl7) and alltrim(xsjscjb.类别)=alltrim(&xsjsbcbl8) and ;
xsjscjb.材长>=xsjsbcbl2 and xsjscjb.材长<=xsjsbcbl3;
and xsjscjb.径级 >=xsjsbcbl4 and xsjscjb.径级 <=xsjsbcbl5
xsjsbcbl=xsjsbcbl+1
endfor
如何改进下面代码,以提高更新速度.
目的主要是想用xsdjb表中树材种,等级,类别,材长x,材长d,径级x,径级d与xsjscjb表相同时的单价替换xsjscjb表中的单价记录,以计算出xsjscjb表中的金额
下面的代码在xsdjb表只有40条记录,xsjscjb表只有10条记录的情况下,运行也要8-10秒,速度太慢.
SELECT xsdjb.树材种,xsdjb.等级,xsdjb.类别,xsdjb.材长x,xsdjb.材长d,xsdjb.径级x,xsdjb.径级d,xsdjb.单价;
FROM xsdjb where xsdjb.文件号=xsdjwjh; &&&&GROUP BY xsdjb.代码
into array lsxsdjsz &&&ORDER BY xsdjb.代码
**************
update tz!xsjscjb set 单价=0 where xsjscjb.结算单号 =scgzjsdh
xsszgs=alen(lsxsdjsz,1)
xsjsbcbl=1
for viv=1 to alen(lsxsdjsz,1)
xsjsbcbl1='"'+lsxsdjsz(xsjsbcbl,1)+'"'
xsjsbcbl7='"'+lsxsdjsz(xsjsbcbl,2)+'"'
xsjsbcbl8='"'+lsxsdjsz(xsjsbcbl,3)+'"'
xsjsbcbl2=lsxsdjsz(xsjsbcbl,4)
xsjsbcbl3=lsxsdjsz(xsjsbcbl,5)
xsjsbcbl4=lsxsdjsz(xsjsbcbl,6)
xsjsbcbl5=lsxsdjsz(xsjsbcbl,7)
xsjsbcbl6=lsxsdjsz(xsjsbcbl,8)
update tz!xsjscjb set xsjscjb.单价=xsjsbcbl6 where xsjscjb.结算单号 =scgzjsdh and alltrim(xsjscjb.树材种)=alltrim(&xsjsbcbl1) and ;
alltrim(xsjscjb.等级)=alltrim(&xsjsbcbl7) and alltrim(xsjscjb.类别)=alltrim(&xsjsbcbl8) and ;
xsjscjb.材长>=xsjsbcbl2 and xsjscjb.材长<=xsjsbcbl3;
and xsjscjb.径级 >=xsjsbcbl4 and xsjscjb.径级 <=xsjsbcbl5
xsjsbcbl=xsjsbcbl+1
endfor