求助:
场景:需要将A表的数据同步到B表,数据量为50万条。
解决方案:
1.读取A表中所有数据,在程序中循环,使用存储过程比对B表中数据,如不存在则更新,如果不存在则添加
2.读取A表和B表中所有数据,使用程序判断是否存在,然后再更新到B表请问哪一种方法效率更高,如果有更好的方法,请指教

解决方案 »

  1.   


    个人觉得这样不好。你可以先查出A表中有且B表中没有的数据,然后再insert 到B表,直接在数据库端操作。insert B表
    select * from A表 a where noe exists(select 1 from B表 b where a.col=b.col)
      

  2.   

    两种方式效率都不太好,效率比较低,建议通过触发器来同步A表建立一个触发器,每次A表插入更新删除自动同步到B表,增加不需要比对,因为是单条数据比对速度很快。   
    及时是更新和删除,比对的次数也远远小于你的设计方案。如果有更好的方案欢迎来拍!
      

  3.   

    并且A表结果我无法更改 可以理解为通过webSevice获得的数据
      

  4.   

    使用SQL Server的同步复制中的事务复制即可。
      

  5.   

    50万 不多,你这是一次性操作吧直接存储过程判断执行就可以了08 可以使用 merge 语句
      

  6.   

    可以直接判断.
    1.update
    update b set ... from b , a where b.关键字 = a.关键字2.insert
    insert into b(需要的字段一一列出) select 需要的字段按照B表的顺序和类型一一列出 from a where not exists(select 1 from b where b.关键字 = a.关键字)如果B,A两表字段类型和顺序一样,则可简写为如下:
    insert into b select * from a where not exists(select 1 from b where b.关键字 = a.关键字)