首页 新闻 搜索 专区 学院

关于sql server 数据库(删除,插入)的性能损耗,

0
悬赏园豆:10 [已解决问题] 解决于 2014-09-11 11:08

现在需要对一张表里的数据进行删除,添加

现在有2中方案

第一种,删除直接delete,添加直接insert,查询直接selete

第二种,用一列来标志状态,删除时将状态设为删除,添加是先判断有没有之前删除的数据,有的话update状态列,没有就insert,查询时需要把状态列也加在条件里(状态列没有索引)

selete,delete 和 update的时候都是走索引的

这2种方案哪种整体(增删改查)的性能高?

jerry128的主页 jerry128 | 初学一级 | 园豆:31
提问于:2014-08-29 18:32
< >
分享
最佳答案
0

暂时选第一种,第二种的话,如果一个表有10个以上的列,你需要判断哪个列值发生改变,你的程序至少19个列(除去主键)需要判断下,那么这会增加代码量。当然除非你能设计出一个高效的判断列值是否发生改变的程序。从数据库层讲,不断的删除数据和增加数据肯定没有直接update好。然后还有上面的朋友说到的表关联问题。

所以现在的问题就转移到,你是否能设计出判断列值重复的问题上了!

判断列值重复:那么会要使用缓存,也就是说会把查询出来的一行数据先缓存起来,然后下次直接和这个缓存值比较。

不过可以看出,你在动脑筋想了问题。赞一个。

收获园豆:10
super mans | 初学一级 |园豆:14 | 2014-08-30 21:35
其他回答(3)
0

单纯论性能的话,第二种方法的Insert肯定差一些的,你还得先判断是否有之前删除的数据。

(不知道楼主如何判断Insert数据和删除数据之间的关系,不加评论)

爱编程的大叔 | 园豆:30664 (高人七级) | 2014-08-29 23:18

补充再说一下,我一向认为对着SQL SERVER这样一个话题,讨论这样两种方案的性能只能说明楼主很闲。

因为99.999999%以上的性能问题根本就与这个无关。

你把这个整破天了也无助于事。

随便选择一种你高兴的方案,不行再换好了。

把时间用在对的地方上。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30664 (高人七级) | 2014-08-30 10:08
0

感觉性能差别不大,不多数据量大的时候可以考虑一下第二种。

晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-08-30 10:53
0

具体情况具体对待,如果是单独表的数据,不影响其他表的数据,就采取第一种;如果与其他表有关联的话,还是采用第二种方法。

会飞的金鱼 | 园豆:881 (小虾三级) | 2014-08-30 12:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册