请教一个关于对比更新的问题,求大神指点下!

zhufan007 2014-11-03 12:09:25
系统环境:windows server2008 R2+SQL Server2008

有两个表,分别为table1,table12;

table1
ID NAME YEAR GCLASS COUNTS
1 韩梅梅 23 法学 292
2 李磊 22 电子商务 308
3 露西 21 考古学 311

table2
ID NAME YEAR GCLASS COUNTS
1 韩梅梅 23 法学+计算机与科学 292
2 李磊 22 电子商务 290
3 露西 21 考古学 311

可以看出,A表和B表具有相同的列,只不过,ID为1的GCLASS,ID为2的COUNTS有不同,现在是要同步对比table1到table2,让两个表完全相同,我现在的做法是,用游标来标记table1的每列的字段到相对应的变量后,然后再用IF来做判断每个字段是否和table2的字段是否完全相同,如果不同,就更新所有字段等于变量,然后依次一直循环到最后。
但是由于实际环境中,table1表的数据是比较多的,有一万多行,且每天都有更改,所以我想能不能每次只同步更新有更改的字段,而不是所有的字段都更新,达到减低数据库的负载。
...全文
347 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
浪淘沙1997 2014-11-04
  • 打赏
  • 举报
回复
1,觸發 2,發布 3,作業 其實都可以作為你的方式 至於效率根據你實際資料量自己測試下 選擇一個吧
还在加载中灬 2014-11-04
  • 打赏
  • 举报
回复
一万多行,直接关联更新,把需要更新的字段更新,速度很快的 不用游标也不用判断,不会给数据库多大压力的
Tiger_Zhao 2014-11-03
  • 打赏
  • 举报
回复
新手最容易犯的错误就是画面上要显示什么,数据库表中有原样存储什么。
冗余超多,同步不易。
别忘了数据库是可以多表联合查询的。
Tiger_Zhao 2014-11-03
  • 打赏
  • 举报
回复
你的数据量太少,真没必要用冗余字段。
重复字段在table1,其他字段在table2,需要时用ID关联。一万记录的一对一关联真心快。
xue1234567890 2014-11-03
  • 打赏
  • 举报
回复
建议不要用游标,游标是一条一条执行的,所以性能不好。。 直接建个作业或触发器。。
zhufan007 2014-11-03
  • 打赏
  • 举报
回复
引用 3 楼 Tiger_Zhao 的回复:
数据完全相同就没必要同步。 删除table2,然后建一个叫table2的视图使用table1不就行了。
之前有口误,不是表数据全部相同,有某些列的数据不需要同步,所以才需要做个。
zhufan007 2014-11-03
  • 打赏
  • 举报
回复
引用 2 楼 dotnetstudio 的回复:
你在table1上建一个update触发器,发生修改,就同时更新table2,关于更新触发器,可以参考 http://blog.csdn.net/dotnetstudio/article/details/10396439
这个方法是不错,不过我实际环境中是不适合用触发器,目前是用定时计划做的,因为考虑到两个表有些特定的列是不能同步的,而且table2是从异地定期复制过来的。
zhufan007 2014-11-03
  • 打赏
  • 举报
回复
引用 1 楼 ky_min 的回复:
要同步对比table1到table2,不明白,GCLASS GCLASS不完全相同时要怎么同步
谢谢大家的关注,我意思是说,在主键ID相同的情况下,同步其它列的字段。
Tiger_Zhao 2014-11-03
  • 打赏
  • 举报
回复
数据完全相同就没必要同步。
删除table2,然后建一个叫table2的视图使用table1不就行了。
KeepSayingNo 2014-11-03
  • 打赏
  • 举报
回复
你在table1上建一个update触发器,发生修改,就同时更新table2,关于更新触发器,可以参考 http://blog.csdn.net/dotnetstudio/article/details/10396439
还在加载中灬 2014-11-03
  • 打赏
  • 举报
回复
要同步对比table1到table2,不明白,GCLASS GCLASS不完全相同时要怎么同步

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧