not in 效率太低了 如:insert into A select (c.field1,c.field2 ,d.field3 from c,d where c.key_id = d.key_id 
and c.filed1 || d.field2 not in (select e.field1 || f .field2 from e,f where e.key_id = f.key_id)其中key_id 为key具体问题,业务逻辑太复杂了,要讲老半天,简化一下,可一运行,c在表中1000条左右的数据就要7秒钟左右运行下,10000以上就down掉了,不知可不可优化,用外连接 或not exist 替换过not in ,但效果都不好,不知有没了的办法

解决方案 »

  1.   

    建议先全插后删掉不要的数据,速度应该会快很多
    1. insert
    insert into A select c.field1,c.field2 ,d.field3 from c,d where c.key_id = d.key_id 
    2. delete 
    delete A from A, d
    where A.filed1 || d.field2 in (select e.field1 || f .field2 from e,f where e.key_id = f.key_id))
      

  2.   

    不行啊,A表中已有约束,插入重复值会有Unique的错误,就是要插入在A表中原先不存在的值,insert 已存在的值会有错误
      

  3.   

    那建议你建一个和A表结构一样的新的空表X
    用我上面说的方法把数据先导到X表去,这样就不会有重复问题,然后再从X表插回A表