远程数据库是oracle
本地数据库是access
技术是remoting
两个数据库的表结构一致,只是本地多了一张存放每个要下载的表的最后一次的更新时间的表Last_Time。现在需要经常从远程数据库下载资料,更新本地的数据库。现在我的实现方法是:
1.从本地Last_Time表中取A表最后一次的更新时间last_time,然后到数据库中找到A表的所有last_modify_date大于last_time的记录。2.然后通过DataSetSurrogate(可以将dataset序列化算法优化,提高传输效率)传递到客户端。3.再在客户端,用foreach遍历每条记录,通过关键字判断本地access中是否有这条记录,有的话则update,没有的话则insert。4.然后再将取服务器时间,更新本地Last_Time表中A表的最后更新时间。现在的问题是:本地下载记录数量如果是2000条的话,就需要45秒。(数据库是公司的服务器,应用服务器是我的pc,客户端也是我的pc。我的pc的配置是cpu3g,内存1g。)如果是用配置比较低的pc做客户端,则需要2分钟所有的下载时间。而且现在只是单个或者几个用户在操作。以后我们面对的用户是2000个。关于优化,我目前的措施:
1.服务器传递dataset改为DataSetSurrogate。微软的人说数据量大的时候效率会高些。2.服务器端sql语句(select)的一些优化。请问大家:如何优化,可以提高下载的效率和速度?

解决方案 »

  1.   

    用一条语句就可以了啊
    首先得到本地表最后一次更新时间(假设字段名为updatetime)insert intto 本地表名
    select * from 远程表名 where updatetime>[本地最后更新时间]
      

  2.   

    楼上的,select * from 远程表名 where updatetime>[本地最后更新时间]出来的记录不能全部insert的,还没有判断是insert还是update呢
      

  3.   

    谢谢楼上的不过现在的情况是我只能基于现有的情况来作优化:总部是oracle数据库,客户端是access。
    两边交换数据。