优化程序提高FoxPro数据库运行效率一例
如:在笔者自己编制的数据库中,有一个字段为“质量原因”分别用001,002,003表示,它对应的就是设计,制造,焊接,现需要把各原因分别替换到数据库中,有下列几种截然不同的实现方法:
方法一:
use dm.dbf &&原因字段名zs,代码字段名bh
rcpl all zs with 设计 for bh=001
rcpl all zs with 制造 for bh=002
rcpl all zs with 焊接 for bh=003
在这方法中,发生频率高的应放在前面,以减少比较次数,提高运行速度。上述方法一虽然是扫描全库多遍,但分类情况较复杂。
方法二:
use dm.dbf
repl all zs with iif(bh=001,设计,iif(bh=002,制造,iif(bh=003,焊接)))
合理而又巧妙地使用iif()函数,使程序简洁精炼,提高if...else...endif结构的效率。
方法三:
DIMENSION MONEY(003)
money(001)=设计
money(002)=制造
money(003)=焊接
use dm
repl all zs with money(bh)
方法三运行效率比方法二更高。方法二要调用iif()函数进行判断,方法三用一个数组问题就全解决。
笔者曾对一个有二万条记录的数据库用上述三种方法在486机器上运行试验,结果如下:
方法一:50秒
方法二:21秒
方法三:19秒
因此,从软件上提高系统的运行速度,仍是程序设计的一个十分重要的问题。
(上海 钱洪贤)