本帖最后由 c_hua6280 于 2011-02-22 14:03:01 编辑

解决方案 »

  1.   

    建议做一个历史表,把旧的数据定期的拷贝到历史表中,减少I_MEI01的数据量
      

  2.   

    有人在吗 这个sql 如果是查询的话,还是比较快的3 分钟就执行完了  30万条数据
    可是一变成DELETE 就非常慢了
      

  3.   

    你把整个数据库 备份出来。。
    然后不 旧数据 Delete
    了不可以??
      

  4.   

    好像不太好吧。   I 表中的数据在W表中不存在的话,是不删除的。 只是对I表中的数据进行最新的更新
      

  5.   

    楼主你这个需求不是很明确。
    不过建议你看看merge into。你的旧数据没有必要删,直接根据你的条件update即可。
    merge into的例子:
    -------实例-------drop table a;
    drop table b;
    create table a(id number(1),name varchar2(10));
    create table b(id number(1),name varchar2(10));
    insert into a values(1,'2');
    insert into b values(1,'1');
    insert into b values(2,'2');
    commit;merge into  a
    using (select id,name from b ) c
    on(a.id=c.id )
    when not matched then insert (a.id,a.name) values (c.id,c.name);
    merge into  a
    using (select id,name from b ) c
    on(a.id=c.id )
    when matched then update set a.name=c.name;merge into  a
    using (select id,name from b ) c
    on(a.id=c.id )
    when matched then update set a.name=c.name
    when not matched then insert (a.id,a.name) values (c.id,c.name);
    作用:将表 b 数据 更新到 表a ,条件是a.id=b.id,如果a表中有该条件的数据就修改,没有该条件的数据就插入。如果你的数据量很大,此sql效率非常高。 
      

  6.   


    哦?那不就是想要merge into 么?
      

  7.   

    这样的话 , W表中其他的数据怎么插入进去呢  还要写一个SQL了。
      

  8.   

    本帖最后由 c_hua6280 于 2011-02-22 14:03:15 编辑
      

  9.   

    本帖最后由 c_hua6280 于 2011-02-22 14:03:31 编辑
      

  10.   

    本帖最后由 c_hua6280 于 2011-02-22 14:03:48 编辑
      

  11.   

    本帖最后由 c_hua6280 于 2011-02-22 14:04:00 编辑
      

  12.   

    本帖最后由 c_hua6280 于 2011-02-22 14:04:13 编辑
      

  13.   

    本帖最后由 c_hua6280 于 2011-02-22 14:04:26 编辑