在key1,key2,key3上加上组合索引,速度会快一些

解决方案 »

  1.   

    弱水兄的回答:
    insert into user2.table1
    select * from user1.table1 x
     where not exists (select 'x' from user2.table1
                        where key1=x.key1
                          and key2=x.key2
                          and key3=x.key3);
      

  2.   

    弱水兄的回答:
    insert into user2.table1
    select * from user1.table1 x
     where not exists (select 'x' from user2.table1
                        where key1=x.key1
                          and key2=x.key2
                          and key3=x.key3);
      

  3.   

    弱水兄的回答:
    insert into user2.table1
    select * from user1.table1 x
     where not exists (select 'x' from user2.table1
                        where key1=x.key1
                          and key2=x.key2
                          and key3=x.key3);
      

  4.   

    如果我用
    insert into user2.table1 ( select * from user1.table1 minus select * from user2.table1)
    速度会不会快呢?那种比较好?
      

  5.   

    我不知道用minus会不会好一些。
    insert into user2.table1
    select * from user2.table1
    minus select * from user1.table1;
      

  6.   

    我不知道用minus会不会好一些。
    insert into user2.table1
    select * from user2.table1
    minus select * from user1.table1;
      

  7.   

    我不知道用minus会不会好一些。
    insert into user2.table1
    select * from user2.table1
    minus select * from user1.table1;
      

  8.   

    not exists是否真的效率比not in高还是有争议的,具体还需要看执行计划。
    你比较一下,同时你也比较一下以下的效率。insert into user2.table1 
    select * from user1.table1 
    where (key1,key2,key3)  in 
    (select /* +rowid(table1)*/ (key1,key2,key3) from user1.table1
     minus
     select /* +rowid(table2)*/ (key1,key2,key3) from user2.table1
     )
      

  9.   

    同意楼上,试试看。
    用not exists的效率可能高些,做做测试吧。