我做了2个库同一张表的数据库更新同步的小程序,用的是ADO做的,循环往要更新的表中插记录,共有10000多条记录,每条记录有93个字段,现在运行速度是每秒5条左右!有没有什么办法可以提高更新速度啊!!望高手赐教

解决方案 »

  1.   

    更新还是添加!
    看你循环算法是否可以优化!
    如果是定位插入的话,可以采用locate进行快速定位,从而节省时间。
      

  2.   

    楼上的仁兄,我是进行插入数据,如果有主键重复的话就继续执行,locate怎么用法?
      

  3.   

    补充:插入数据我是用的ADOQuery.Add('insert into ...');
    是否用赋值就会快点?
      

  4.   

    是sql server数据库吗?
    如果是sql数据库,为什么不用数据库链接定时更新呢?
      

  5.   

    楼上说的用触发器,大概怎么做?本人刚转delphi,很菜中
      

  6.   

    补充:插入数据我是用的ADOQuery.Add('insert into ...');
    是否用赋值就会快点?
    ========================================================
    你这是最差的方法。一定要用参数SQL的方式。
      

  7.   

    w我是用的参数啊ADOQuery.Add('insert into ...'+ado.fieldbyname('').asstring);
      

  8.   

    1.触发器
    2.数据库表同步
    3.语句实现
    Insert 库2.dbo.table1 select * from 库1.dbo.table1
    用一条语句解决,形成一个事务,比较快!
      

  9.   

    Insert 库2.dbo.table1 select * from 库1.dbo.table1
    ??是不是直接把表导进表里,可能我没说明白
    现在库1的表中包括有库2中的部分数据,也有不是库2的数据,现在要实现库2中的数据必须在库1中有
      

  10.   

    增量同步用触发器,看一下SQL Server的帮助就可以了。 CREATE TRIGGER
      

  11.   

    不会用触发器的话可以用存储过程啊,在DELPHI里用循环一条条记录上传那肯定慢了
      

  12.   

    樓主可以從這幾個角度去考慮:
    1.不要每增加一條都啟動一個事務,而是在一所有增加在一個事務中進行,這樣會提高一些速度。
    2.你insert前可能是先去數據庫select了一下數據是否有存在,這個過程完全可以利用
    insert into (...) values (...) where not exist (select ...)代替。