建个临时表啊,可以一个月或者一天进行入库,查寻临时表不就可以了
或者在oracle中要索引要快的多

解决方案 »

  1.   

    TO :welyngj(平平淡淡)
    如果一个表每天有70-80M的数据。一个月那表空间就用了18XX.XXM这样的分区该怎么分好?一个星期一个区还是半个月一个区?
    表(Table1)结构: F1-VARCHAR2(20),F2-VARCHAR2(20),F3-DATE,F4-NUMBER,F5-NUMBER,F6-VARCHAR2....大概12个字段左右.
    还有个问题是分区表的索引问题,如果那个表必须要有一个唯一性的索引(F2,F3)现在分区是已F3日期字段分区,建立索引是否是这样:假设分区是一个月一个分区假设现在才开始建表,并且表分配了三个分区(cm200401,cm200402,cm200403)。
    create UNIQUE index pk_Table1 
    on Table1  (F3,F1)
    local
    (
      partition cm200401,
      partition cm200402,
      partition cm200403
    );
    我在测试中发现,不知道ORACLE为什么要这样做。如果现在我不需要200401月的数据,我把分区cm200401 DROP掉了。并且也把分区对应的表空间删除掉了,因为硬盘不大!!!!现在发现突然又需要那些数据,所以就想把分区cm200401导进去。
    正常步骤是先建立表空间,再为表添加分区:
    alter table add partition cm200401 values less than (to_date('2004-02-01','yyyy-mm-dd'))
    tablespace cm200401 storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0); 
    这个时候出现了错误,说条件必须大于最高值,意思不能建立小于2004-04-01日分区条件的分区。为什么要这样啊~我知道假设我不建立这个分区,数据是可以导进去,是放在cm200402分区中,但是我不想把这二个放在一起,那应该怎么办?
    方法我知道一个可以解决,我们删除分区最终是为了释放出硬盘空间,如果我们在truncate分区后,不删除分区,而是把分区对应的表空间减小到1M(一个分区对应一个表空间),当要导数据的时候再加回来,这样也可以的达到释放硬盘的目的,但是如果不小心把分区删掉了,就不知道怎么办了,不过这样久了会产生很多的数据文件。
      

  2.   

    我想,INSERT的操作不会慢,就是查询的时候如果使用
    索引不当,可就知道结果了。这要看你操作数据库的SQL语句的合理性,和使用索引的合理。。