运行时间太长,求算法!(100分)

  • 主题发起人 主题发起人 mathuly
  • 开始时间 开始时间
M

mathuly

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做一软件,与原有系统的数据库做对接,从中取客户的信息。<br>原有系统客户信息更新了,我这边也要更新。<br>我把客户信息取过来后,与我这边库里的信息进行对比,如果有变化就进行更新<br>客户信息现在有1。5w条,现在运行时间要10多分钟,时间太长了,求大侠给个算法!!<br>取过来的数据在动态结构数组中,我的数据在一个表中。我的做法是对动态数组进行循环,与我的表中数据进行对比,找出要更新的数据和要添加的数据。这样做太慢了,而且cpu占用很大。<br>希望大家帮帮我!
 
原有系统的数据库中加一个表,记录原始数据,更新时对原表和新增表进行比较,只要少量的数据就搞定。<br>直接用原系统中的表应该才是最好的办法,如果表有变化,可以考虑把表一分为二,这样不需要进行什么对比!
 
在客户信息的那张表里面加三个字段A、B、C,分别表示该条记录是新添加的、该条记录已修改、该条记录已删除<br>同步时,<br>1. 将新添加的记录添加到服务器上,然后修改客户端A标志。<br>2. 将已修改的记录更新到服务器上,然后修改客户端B标志。<br>3. 删除服务器上与客户端C标志为1的记录相关的那些记录,然后删除客户端C标志为1的记录。
 
方案一、写触发器来做更新,优点是数据更新及时,缺点是,如果触发器失败,原表也无法更新成功。<br>方案二、在第一种方案基础上改进,先要更数据用触发器写到一个临时表中,再定时从临时表中更新到目录表。有第一种方案的优点,又没有第一种方案的缺点。<br>方案三、每次把目标表数据清空,再从源表中直接insert进去。这样的动作不能频繁做,而且目标表数据要不能更改的。否则更改会无效。
 
同意willing66的方法。<br>写个触发器最方便,但是一定要把触发器的算法写正确,否则很容易出错哦!
 
多人接受答案了。
 
后退
顶部