现在有两个数据库,A和B,分别存在表a和b,两个表都有身份证号码的字段,将a表的数据去比对b表,如果在b表中存在,在a表该数据的一个字段修改为true。环境为asp.net2.0和oracle10g,a,b表数据量都超过50w,请问有各位有什么思路和实现的方式吗,现在一头雾水啊。

解决方案 »

  1.   

    可以直接求A和B 的交集 (ID)然后更新A表 where AID in (ID)
      

  2.   

    创建一张虚拟表,然后
    select   A.ID,  B.ID AS ID from A  CROSS JOIN B  
     where A.ID=B.ID
    查询出交集存入  然后根据ID update
      

  3.   

    如果A表中的身份证ID也在B表中存在,那就把A表中该身份证ID行的数据改了。。别说你连这个简单的语句都写不出来??现在是该怎样去优化性能?
      

  4.   

    update A set A.IS_TRUE=1 where A.IDENTITY_ID not in (SELECT A.IDENTITY_ID from A minus SELECT B.IDENTITY_ID from B);commit;数据量>100W,可考虑用小批次进行更新。
      

  5.   

    ;with aaa as(
    select a.id from tableA a  inner join tableB b on a.id=b.id and a.num=b.num)
    update a set a.num='true' from tableA a inner join aaa b on a.id=b.id