nod,现在就用的笨办法,感觉还是慢。
用游标会不会很慢啊?
或者倒成文本文件,处理文件?

解决方案 »

  1.   

    哦,你要是不嫌方法笨的话,这个方法有改进余地:
    1.你在原始表的时间上建索引了吗?
    2.你在建各个中间表时不要有索引,数据灌入后再建合适的索引
    如果都做了的话,应该速度是不错的,除非系统的IO太慢了。
    PS:建索引时开大SORT_AREA_SIZE了吗?
    alter session set sort_area_size=20000000;
      

  2.   

    1,原始表相关字段已经作了索引
    2,临时表是SELECT时候INTO生成的
    一个表处理下来要几个小时,一共100多个这样的表,所以效率很重要
      

  3.   

    select时候into?啥意思,不是用CURSOR吧?
    中间表不是create ... as select 或 create 完用insert into的吗?
    还有中间表的索引不知你建了没有?
    我也做过类似的处理,数据量比这个多,在COMPAG DS20或SUN E250这些
    低端的机子上跑也没超过1个小时啊
      

  4.   

    SLEECT * FROM TABLE1 INTO TEMP TABLE2
    用CURSOR会不会很慢?
      

  5.   

    cursor,别用!
    100多个表,汗!水平有限,估计帮不了你什么了。
    期待高手有啥别的方法。
    不知道并行查询的帮助有多大
      

  6.   

    分区表,这个表分成24个区
    create table a 
    CREATE TABLE sales_range
    (
    salesman_id   NUMBER(5), 
    salesman_name VARCHAR2(30), 
    sales_amount  NUMBER(10), 
    sales_date    DATE, 
    PRIMARY KEY(sales_date, salesman_id)) 
    ORGANIZATION INDEX INCLUDING salesman_id 
    PARTITION BY RANGE(to_char(time,'hh24'))
    (PARTITION p1 VALUES LESS THAN(1),
     PARTITION p2 VALUES LESS THAN(2),
     partition p3 values less than(3),
     ...
     partition p24 values less than(24));
      

  7.   

    赞成PATITION TABLE,
    呵呵,不过改动比较大,不知道楼主有没有这个权利和时间来做
      

  8.   


     楼主如果连分区表的概念都很模糊的话,还是算了吧...
     
     基本思路:   1.创建一个空的带分区的表,分区规则可以参照 beckham前面提到的;   2.创建用于交换的临时表: temp_1,temp_2,...可参照isaacchang的
         方案;    
           
       3.交换数据:
         alter table t
          exchange partition part1
           with table temp_1
           without validation    alter table t
          exchange partition part2
           with table temp_2
           without validation     ...
     
     
     
      

  9.   

    http://fengyu.china.com/direct_insert.htm
    刚刚看到一篇文章,不知道有没有用啊!
      

  10.   

    强烈支持beckhambobo(beckham) 的范围分区!!!
      

  11.   

    那样的话就2400个表了,更难处理。
    每个表的数据量小不了多少,还不如表里加上一个字段state_time
    按照时间更新为1-24
      

  12.   

    create .. as select ..
    效率会提高些
      

  13.   

    按时间点分,只有24个分区,都属于一张表,分区概念是把一表分区处理,不是分表.
    参考以下:
    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c12parti.htm#464767