主题:如何提高更新记录的速度
如何改进下面代码,以提高更新速度.
目的主要是想用xsdjb表中树材种,等级,类别,材长x,材长d,径级x,径级d与xsjscjb表相同时的单价替换xsjscjb表中的单价记录,以计算出xsjscjb表中的金额
下面的代码在xsdjb表只有40条记录,xsjscjb表只有10条记录的情况下,运行也要4-8秒,速度太慢.
SELECT xsdjb.树材种,xsdjb.等级,xsdjb.类别,xsdjb.材长x,xsdjb.材长d,xsdjb.径级x,xsdjb.径级d,xsdjb.单价;
FROM xsdjb where xsdjb.文件号=xsdjwjh;
into array lsxsdjsz
**************
for i=1 to 1
replace all xsjscjb.单价 with 0 for xsjscjb.结算单号 =scgzjsdh
endfor
xsszgs=alen(lsxsdjsz,1)
xsjsbcbl=1
do while xsjsbcbl<=xsszgs
*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)
for i=1 to 1
replace all xsjscjb.单价 with xsjsbcbl6 for 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 and xsjscjb.结算单号 =scgzjsdh
endfor
xsjsbcbl=xsjsbcbl+1
enddo
目的主要是想用xsdjb表中树材种,等级,类别,材长x,材长d,径级x,径级d与xsjscjb表相同时的单价替换xsjscjb表中的单价记录,以计算出xsjscjb表中的金额
下面的代码在xsdjb表只有40条记录,xsjscjb表只有10条记录的情况下,运行也要4-8秒,速度太慢.
SELECT xsdjb.树材种,xsdjb.等级,xsdjb.类别,xsdjb.材长x,xsdjb.材长d,xsdjb.径级x,xsdjb.径级d,xsdjb.单价;
FROM xsdjb where xsdjb.文件号=xsdjwjh;
into array lsxsdjsz
**************
for i=1 to 1
replace all xsjscjb.单价 with 0 for xsjscjb.结算单号 =scgzjsdh
endfor
xsszgs=alen(lsxsdjsz,1)
xsjsbcbl=1
do while xsjsbcbl<=xsszgs
*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)
for i=1 to 1
replace all xsjscjb.单价 with xsjsbcbl6 for 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 and xsjscjb.结算单号 =scgzjsdh
endfor
xsjsbcbl=xsjsbcbl+1
enddo