做index啊。partition也很好啊。其实只要表设计的好,500万是小意思的。我玩过好几个千万以上记录的,
也没感到慢。

解决方案 »

  1.   

    是这样的index是肯定建了的partition一直没用过,不会用。-_-b这个表不是静态表,每天会增加5-10万条记录。简单的查询感觉不出来但如果是在这个表上做复杂的查询,比如需要在这个表中查30个不同的结果集,再碰到在往这个表批量写数据时就很郁闷了有时会出现程序不响应了。-_-
      

  2.   

    优化查询,注意不要用什么distinct,group by,这些对性能都有很大的影响
    还有就是把表和索引放在不同的表空间上.
      

  3.   

    听说电信对于大容量数据是以分表形式,即每一个月的数据以一个表存储,这样对于开发人员有点难度(当时本人面试获知)
    而对于大容量表所取分区方法(oracle中心已采取的方法)
    以考帮助文档:
    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c12parti.htm#464767
      

  4.   

    数量大的表,分区显然是要选择的,当然要结合你的查询选择分区方式
    index就不必说了
    另外,就是优化查询,500万的数据是小意思,但是如你所说,每天增长,
    还是赶快行动吧,不然,嘿嘿…… ……
    越来越麻烦的
      

  5.   

    500万的数据量不用分区,但是考虑到以后的数据增长,最好作一下
     分区的准备工作. 例子: create table t (dt, OWNER, 
                 OBJECT_NAME, SUBOBJECT_NAME,OBJECT_ID, 
         DATA_OBJECT_ID, OBJECT_TYPE, CREATED,
                 LAST_DDL_TIME, TIMESTAMP, STATUS, 
                 TEMPORARY, GENERATED, SECONDARY)
                partition by range(dt) (
                  partition part2000 values less than 
                   (to_date('01-01-2001','dd-mm-yyyy')),
                  partition part2001 values less than 
                   (to_date('01-01-2002','dd-mm-yyyy')),
                  partition part2002 values less than 
                    (to_date('01-01-2003','dd-mm-yyyy'))
                  ) as
                   select sysdate dt, all_objects.* 
                   from all_objects where 1=0;