需要调用远程数据库的几张表,发现这几张表某几个字段没有加索引,调用查询很慢慢.
    于是把这几张表全部数据拷贝放入本地数据库中的同名表中,再加上索引,即解决了数据查询速度的问题.
    方法: 第一次,create table 本地表 as select * from 远程表; 
          再对本地表创建对应的几个字段的索引.    问题: 
       由于远程表数据每天都有新增更新数据,希望保持3天更新一次.远程表数据大约在300W左右,其中一张表由2000多W数据,
    我的办法:(1)truncate table 本地表; (2) insert into 本地表 select * from 远程表;  但是真正实行起来速度太慢了,特别是本地表已经创建了索引,重新插入速度太慢,耗内存,耗临时表空间
       
       请问碰到这种方法,该如何解决????

解决方案 »

  1.   

    采用触发器或物化视图,如果是物化视图,并不是时时的更新,有更新频率的,把refresh fast next..的值设置短一些,则会接近时时更新,具体用法baidu搜下你现在的处理方式应是作业处理的吧?
      

  2.   

    你的方法没问题,truncate之后 禁用索引,数据过来之后再rebulid 索引。。
      

  3.   

    用Oracle的merge into,只插入本地没有的数据如何?
      

  4.   

    比较理想的办法是goldengate,另一种方法是truncate->删除索引->将表设为nologging->插入数据->重建索引->将表设为logging
      

  5.   

    当然不可以,因为merge into 需要把本地表和远程表关联,在你这个特定的需求下会更慢。请看7楼