有一个表info_call_day 存的是最近40天的记录,该表的每日执行过程内容为删除前第40天的数据插入当天的数据(即只保留近40天的数据)。
由于该表数据量大(1千万多条),需要建分区表优化性能,由于表内的CALL_DATE(日期字段)是累加的,请问有什么办法可以解决呢?
谢谢

解决方案 »

  1.   

    按日期字段做范围分区表
    分区表可以add drop split merge分区
    1千万多条如果在小型机上数据量不算大
    900万条用SqlServer7在dell的PCServer上都很轻松
    设计和数据库调优很重要
      

  2.   

    create table info_call_day (
    ...
    )
    paratitions range by  call_date
    (
    paratition p20060101 less than to_date('20060101','yyyymmdd'),
    paratition p20060102 less than to_date('20060102','yyyymmdd'),
    paratition p20060103 less than to_date('20060103','yyyymmdd'),
    paratition p20060104 less than to_date('20060104','yyyymmdd'),
    .....
    )如果没有索引的话很简单 清空或删除40天前的一个分区
    alter table info_call_day truncate paratition p20060101;
    即可或者  alter table info_call_day drop paratition p20060101;如果有索引,必须对每个索引进行重建
    alter index idx_info_call_day rebuild ; 否则索引不可用。