这两天改了一个公司的老程序,有些数据库中的记录数据达到了百万条之多,因此运行时,无论是查询、增加、修改等效率都很低,现在虽然程序已经改完,但是效率问题仍然没有解决,公司用的是oracle数据库,不知道各位大虾们都用什么样的办法解决效率问题呢

解决方案 »

  1.   

    加曆史表,緩存更新。 索引與DML是相反的作用。
      

  2.   

    1.优化oracle,增加回滚段的大小。
    2.增加历史表,把处理完成的业务放到历史表中。
    3.使用表分区功能,表分区特性有助于加快检索的速度。
      

  3.   

    你尚未说清楚性能问题到底是什么,更新速度慢还是读取速度慢?许多没有经验的程序员往往给Dataset的SQL设置类似与:select * from tablename的语句,没有查询条件,一旦Dataset.Active:=true,则慢的要命。另外Delphi缺省的事务管理机制也是十分低效的,当然我就见过编了7年数据库代码,不知事务为何物的程序员。建议如下:1、限制初始返回的数据条数(比如rownum<300);2、其他数据由用户输入条件查询;3、尽可能使用参数而不是字符串构造,因为前者可以充分利用Oracle语句缓存;4、尽可能使用batchupdate或cachedupdate(视你采用的编程控件);5、对于经常使用的查询字段建立索引;6、对于复杂统计,可以采用预先统计存储到特定的数据表中;7、如楼上所说,对表分区;8、记住过多的索引会减低数据更新的速度;9、对于频繁使用但数据量不大的数据,开启服务器端缓存。