以下是引用sdta在2016-12-10 17:53:08的发言:
请大家测试一下50W条记录运行时间是多少(在我的电脑上5-6秒,包括测试数据的生成)
T1=SECONDS()
CREATE CURSOR Cj (班级 C(5),姓名 C(10),总分 N(4),班级名次 N(6),年级名次 N(6))
=RAND(-1)
FOR I=1 TO 10000
FOR J=1 TO 50
INSERT INTO Cj (班级,姓名,总分) VALUES ("B"+PADL(I,4,"0"),SYS(2015),RAND()*100)
ENDFOR
ENDFOR
INDEX ON 班级-STR(总分,4) TAG px DESCENDING
* 班级名次
mc=1 && 记录班级名次
nzf=0 && 记录上条记录的总分
cbj="" && 记录班级名称
nrs=1 && 记录班级人数
SCAN
IF ALLTRIM(班级)!=cbj
STORE 1 TO nrs,mc
ELSE
IF 总分!=nzf
mc=nrs
ENDIF
ENDIF
REPLACE 班级名次 WITH mc
nrs=nrs+1
nzf=总分
cbj=ALLTRIM(班级)
ENDSCAN
SET ORDER TO
* 年级名次
INDEX ON -总分 TO px
mc=0
nzf=0
nrs=1
SCAN
IF 总分!=nzf
mc=nrs
ENDIF
REPLACE 年级名次 WITH mc
nrs=nrs+1
nzf=总分
ENDSCAN
MESSAGEBOX("共运行:"+TRANSFORM(SECONDS())+" 秒")
BROWSE
请大家测试一下50W条记录运行时间是多少(在我的电脑上5-6秒,包括测试数据的生成)
T1=SECONDS()
CREATE CURSOR Cj (班级 C(5),姓名 C(10),总分 N(4),班级名次 N(6),年级名次 N(6))
=RAND(-1)
FOR I=1 TO 10000
FOR J=1 TO 50
INSERT INTO Cj (班级,姓名,总分) VALUES ("B"+PADL(I,4,"0"),SYS(2015),RAND()*100)
ENDFOR
ENDFOR
INDEX ON 班级-STR(总分,4) TAG px DESCENDING
* 班级名次
mc=1 && 记录班级名次
nzf=0 && 记录上条记录的总分
cbj="" && 记录班级名称
nrs=1 && 记录班级人数
SCAN
IF ALLTRIM(班级)!=cbj
STORE 1 TO nrs,mc
ELSE
IF 总分!=nzf
mc=nrs
ENDIF
ENDIF
REPLACE 班级名次 WITH mc
nrs=nrs+1
nzf=总分
cbj=ALLTRIM(班级)
ENDSCAN
SET ORDER TO
* 年级名次
INDEX ON -总分 TO px
mc=0
nzf=0
nrs=1
SCAN
IF 总分!=nzf
mc=nrs
ENDIF
REPLACE 年级名次 WITH mc
nrs=nrs+1
nzf=总分
ENDSCAN
MESSAGEBOX("共运行:"+TRANSFORM(SECONDS())+" 秒")
BROWSE
5-6秒?好快噻