当前位置: 代码迷 >> Sql Server >> 关于批量插入批改删除的方案
  详细解决方案

关于批量插入批改删除的方案

热度:34   发布时间:2016-04-24 10:17:35.0
关于批量插入修改删除的方案
需求背景:
 tba 里面根据ID(primary key)查询出1000 条记录,并把 这1000条记录加载到页面,业务处理后 基于原来1000条记录,有插入,删除,修改的,把新的记录集 要保存到tba。

方案一:
把新的记录用一个表变量传进来, 然后 直接根据ID把 原来 1000 全部删除,然后全部插入。

方案二:
把新的记录用一个表变量传进来, 然后进行比较 delete , 然后merge into update.

方案三:
在程序端进行比较,把 删除 修改 插入 记录直接找出来,然后通过3个表变量 直接操作。子在数据库就少了比较的操作。

对于这种不知道还有什么好的方案, 个人倾向方案三, 
方案一  如果表记录非常大超过10亿,删除 和插入都会导致cluster index 的移动。效率低
方案二 有一个比较逻辑在里面。会影响数据库性能。
------解决方案--------------------


引用:
谢谢楼上的解释, 在实际应用中 主键是采用2个int字段复合主键, 不会去修改复合主键上的值,一般只是 插入,删除, 修改只是修改其他字段的值。

在这采用复合主键合适吗?





对于单表,设置复合主键其实没问题。注意一点就是,要是在其他表与其有外键关系,最好不要使用复合主键,不然维护很麻烦。



  相关解决方案