暂时选第一种,第二种的话,如果一个表有10个以上的列,你需要判断哪个列值发生改变,你的程序至少19个列(除去主键)需要判断下,那么这会增加代码量。当然除非你能设计出一个高效的判断列值是否发生改变的程序。从数据库层讲,不断的删除数据和增加数据肯定没有直接update好。然后还有上面的朋友说到的表关联问题。
所以现在的问题就转移到,你是否能设计出判断列值重复的问题上了!
判断列值重复:那么会要使用缓存,也就是说会把查询出来的一行数据先缓存起来,然后下次直接和这个缓存值比较。
不过可以看出,你在动脑筋想了问题。赞一个。
单纯论性能的话,第二种方法的Insert肯定差一些的,你还得先判断是否有之前删除的数据。
(不知道楼主如何判断Insert数据和删除数据之间的关系,不加评论)
补充再说一下,我一向认为对着SQL SERVER这样一个话题,讨论这样两种方案的性能只能说明楼主很闲。
因为99.999999%以上的性能问题根本就与这个无关。
你把这个整破天了也无助于事。
随便选择一种你高兴的方案,不行再换好了。
把时间用在对的地方上。
感觉性能差别不大,不多数据量大的时候可以考虑一下第二种。
具体情况具体对待,如果是单独表的数据,不影响其他表的数据,就采取第一种;如果与其他表有关联的话,还是采用第二种方法。