【求助】怎样才能加快统计的速度?
有一个上百万条记录的表dbf1,我编了个小程序用其中的几个字段值作为条件进行统计,得到相同字段值的记录数,再把统计结果输出到dbf2,然后把表dbf1中已经统计过的记录删除,再进行下一次统计,一直循环到表dbf1为空。不过感觉速度实在太慢,向论坛的各位求助,大家看看我的程序帮助分析一下,是不是我的思路错了?sele 2
use dbf2 &&记录统计结果的表
sele 1
use dbf1 &&原始数据
do while bof()=.t.
field1=a1 &&取字段值作为统计条件
field2=a2
fieldn=an
count for field1=a1 and field2=a2 and ……fieldn=an to aaa &&得到统计结果
sele2
insert into dbf2(field1,field2,……fieldn,同条件记录数) values(a1,a2,……,an,aaa) &&把统计
条件和
结果写到dbf2
sele 1
dele for field1=a1 and field2=a2 and .……fieldn=an &&删掉已有结果的记录,减小dbf1体积
pack
enddo
大家帮我看看,有没有更好的办法?
P.S.为了便于大家理解,我用两个表说明:
假设dbf1存放的是需要统计的数据,当然记录的排列肯定没有下
面排列的那么整齐,字段数也不止这么少。
dbf1
field0 field1 field2 field3 field4 field5 field6 field7
a 13 990 3 .t. .t. .f. 工人
b 13 990 3 .t. .t. .f. 工人
c 13 990 3 .t. .t. .f. 工人 ←未经统计的数据
d 13 990 3 .t. .t. .f. 工人
e 33 1200 5 .f. .f. .t. 技师
f 33 1200 5 .f. .f. .t. 技师
g 11 960 1 .t. .t. .t. 学徒
h 11 960 1 .t. .t. .t. 学徒
i 11 960 1 .t. .t. .t. 学徒
j 11 960 1 .t. .t. .t. 学徒
k 11 960 1 .t. .t. .t. 学徒
l 43 1000 3 .t. .f. .t. 技师
m 17 910 1 .t. .t. .f. 工人
n 17 910 1 .t. .t. .f. 工人
dbf2存放统计的结果
dbf2
field1 field2 field3 field4 field5 field6 field7 同条件记录数
13 990 3 .t. .t. .f. 工人 4
33 1200 5 .f. .f. .t. 技师 2 ←我需要的结果
11 960 1 .t. .t. .t. 学徒 5
43 1000 3 .t. .f. .t. 技师 1
17 910 1 .t. .t. .f. 工人 2
[ 本帖最后由 mlpoo 于 2009-9-16 21:52 编辑 ]