由于系统用了比较久,oracle数据库的某个表中的数据量又非常大,所以速度就慢了很多,想问下高手或有经验的对此情况应该如何处理,应该如何去思考提高系统的查询速度,等方法!!!欢迎有此想法的朋友一起讨论,谢谢!!!

解决方案 »

  1.   

    1、建分区表
    2、常用查询字段建立索引
    3、DBA定期做表分析
      

  2.   

    3、DBA定期做表分析
    一般要分析些什么常用的东西,谢谢!!!!
      

  3.   

    分析是用命令:
    analyze table ...
    exec dbms_stats.gather_...
    对数据库处理
      

  4.   

    另外你可以对一些关键表做在线重定义,这样可以达到重组表的效果
    可能参看:http://space.itpub.net/17997/viewspace-281012
      

  5.   

    对有主键的表做在线重定义:
    1.检查表是否可在线重定义
    SQL> exec dbms_redefinition.can_redef_table('USER','T');
    无异常说明可在线重定义
    2.建立中间表,如果是生产库,建议同时建立相关索引,虽然速度可能受到影响,但总比切换时影响到使用该索引的SQL好吧!
    SQL> create table t_m as select * from t;
    3.复制数据
    SQL> exec dbms_redefinition.start_redef_table('USER','T','T_M');
    4.同步并切换
    SQL> exec dbms_redefinition.finish_redef_table('USER','T','T_M');
    此至,两个表做了切换,在线重定义完成。这样重定义表有什么好处,请发表一下各自的看法!!!!