优化程序提高FoxPro数据库运行效率一例

Author: 上海 钱洪贤 Date: 1996-12-27

        例如,有些数据的修改是有规律地成批运行的,如果不从软件上精心设计,可能要花费好长时间。
        如:在笔者自己编制的数据库中,有一个字段为“质量原因”分别用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秒
        因此,从软件上提高系统的运行速度,仍是程序设计的一个十分重要的问题。
        (上海   钱洪贤)