首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

关于VFP代码运行速度有关问题

2013-08-04 
关于VFP代码运行速度问题有段查询代码,100条记录运行时间为0.047秒,而1000条记录运行时间为4.238秒,每条记

关于VFP代码运行速度问题
有段查询代码,100条记录运行时间为0.047秒,而1000条记录运行时间为4.238秒,每条记录有7个字段需要统计,运行时间为什么相差这么大,问题出在第二个SCAN ENDSCAN语句中,可能与OCCURS()有关。
而生成10000条记录的临时表的运行时间才0.125秒。
请大家帮忙看看


从中可以看到
S[I]=OCCURS(PADL(AZD(I),2,[0]),CSTR1)
被运行了 7000 次,一共用了 7000*0.000814=5.7 秒,这是在我的笔记本上的运行结果,总时间是 6.44 秒,这条语句占了近 90% 时间
[解决办法]
*--1秒以内:
Create Cursor ta (fa N(2))
Create Cursor T (XM C(5),SX N(2),YW N(2),YY N(2),WL N(2),HX N(2),DN N(2),ZZ N(2))


=Rand(-1)
For I=1 To 1000
Insert Into T (XM) Values (Padl(I,5,[0]))
For J=2 To Fcount()
N=Rand()*60
Replace (Field(J)) With N+J
Insert Into ta (fa) Values (N+J)
Endfor
Endfor
T1=Seconds()
Select *,Padl(SX,2,[0])+[,]+Padl(YW,2,[0])+[,]+Padl(YY,2,[0])+[,]+Padl(WL,2,[0])+[,]+Padl(HX,2,[0])+[,]+Padl(DN,2,[0])+[,]+;
PADL(ZZ,2,[0]) NR,0000 TJ,0000 A1,0000 A2,0000 A3,0000 A4,0000 A5,0000 A6,0000 A7 From T Into Cursor T1 Readwrite
Select fa,Count(*) As fa_cnt Into Cursor tb From ta Group By fa
Update T1 Set A1=tb.fa_cnt-Occurs(Padl(T1.SX,2,'0'),T1.NR) From tb Where T1.SX=tb.fa
Update T1 Set A2=tb.fa_cnt-Occurs(Padl(T1.YW,2,'0'),T1.NR) From tb Where T1.YW=tb.fa
Update T1 Set A3=tb.fa_cnt-Occurs(Padl(T1.YY,2,'0'),T1.NR) From tb Where T1.YY=tb.fa
Update T1 Set A4=tb.fa_cnt-Occurs(Padl(T1.WL,2,'0'),T1.NR) From tb Where T1.WL=tb.fa
Update T1 Set A5=tb.fa_cnt-Occurs(Padl(T1.HX,2,'0'),T1.NR) From tb Where T1.HX=tb.fa
Update T1 Set A6=tb.fa_cnt-Occurs(Padl(T1.DN,2,'0'),T1.NR) From tb Where T1.DN=tb.fa
Update T1 Set A7=tb.fa_cnt-Occurs(Padl(T1.ZZ,2,'0'),T1.NR) From tb Where T1.ZZ=tb.fa
Update T1 Set TJ=A1+A2+A3+A4+A5+A6+A7
Messagebox([运行时间:]+Transform(Seconds()-T1)+[ 秒])
Select T1
Browse

热点排行