程序代码:
* 生成测试表 CREATE CURSOR 测试 (序号 I,值 I) NVAL=10000002 FOR I=1 TO NVAL INSERT INTO 测试 VALUES (I,I) ENDFOR * 生成区间表 CREATE CURSOR 区间 (X I,Y I,Z I) J=0 FOR I=1 TO INT(NVAL/6) STEP 6 J=J+1 INSERT INTO 区间 VALUES (I,I+5,J) ENDFOR * 测试方法1_SQL查询 *!* T1=SECONDS() *!* Select Transform(X) + "-" + Transform(Y) + SPACE(10) As 区间, Sum(值) As 求和 Where 序号 Between X And Y group by z From 测试, 区间 into cursor ttt *!* MESSAGEBOX("共用时 "+TRANSFORM(SECONDS()-T1)+" 秒") *!* Browse * 测试方法2_VFP * 求和结果表 T1=SECONDS() CREATE CURSOR 结果 (区间 C(20),和 N(8)) NSUM=0 SELECT 测试 SCAN NSUM=NSUM+值 IF MOD(序号,6)=0 INSERT INTO 结果 VALUES (TRANSFORM(测试.序号-5)+"-"+TRANSFORM(测试.序号),NSUM) NSUM=0 ENDIF ENDSCAN MESSAGEBOX("共用时 "+TRANSFORM(SECONDS()-T1)+" 秒") SELECT 结果 BROWSE
如果记录数达到10万条以上,SQL命令处理数据所用时间与VFP命令处理数据所用时间,就不是一个档次了。
坚守VFP最后的阵地