本人正在做一个数据传输的小程序,用于两表之间的数据批量更新。
  想与大家讨论一下提高效率的方法。
  环境:
  表A、表B
  表A.主键A、表B.主键A
  表A.传输标志
  方法一:
  1、找到表A.传输标志表示为要传输的所有记录X
  2、查所记录X1在在表B中是否存在
  3、如果存在就update
  4、如果不存在就insert
  5、更改记录X的传输标志
  这样的方法会浪费很多时间在"查所记录X1在在表B中是否存在"的上面。
  当然在insert、update时要用到ADOConnection的BeginTrans、CommitTrans、RollbackTrans。
  这是一个抛砖引玉的方法,望各大高手多来发表高见!

解决方案 »

  1.   

    update B set B.X = A.X from B,A where B.xx = A.xx
    insert into B select * from A where X not exists(select X from B)
      

  2.   

    你的更新算法是什么样的?
    如果是不存在就更新的话,那只能满足insert的情况,如果纪录update过呢?
    如果a b 表的数据不一样怎么办?

      

  3.   

    如果update过就可以在更新时间表中比较出来呀
      

  4.   

    if exits(select * from b where)
     begin
     end
    else
     begin
     end