在SQL Server 2008/2005上给出两个方案 - 1表有5行 2表有100万行
如果我们需要更新几行,那么效率是多少?为什么? 1)更新所需的列 2)使用更新的信息删除行和INSERT新行
答案 0 :(得分:16)
你不应该问这个问题。你问的是“以更快的'一些含糊的想法的名义,以正确的方式或错误的方式做到这一点更好吗?”
你的应用程序有点太慢吗?你是否出于某种原因认为问题是因为你的UPDATE花了太长时间?您是否对数据库交互的性能进行了任何度量和基准测试?
您正在做的是过早优化最糟糕的类型,并且这样做会对您的应用程序造成伤害。你正在猜测如何加速你的代码,绝对没有任何基础。
正确编写代码。然后尝试找出存在性能问题的位置。你是否有性能问题,或者你只是因为你认为这是你应该问的问题而问这个问题?你不应该。
即使你特别DID有一个问题,你的UPDATE太慢了,我们也无法回答“X比Y更快”的问题,因为你没有给我们足够的信息,例如:
请正确编写代码,然后回过头来看一下速度太慢的细节,而不是猜测微优化。
答案 1 :(得分:2)
通常更新单行会更快。原因是删除现有行并插入新行,这两个操作都将影响聚簇索引。更新单行也会对各种索引产生影响,但不会影响聚簇索引。没有数据支持我的声明,但逻辑上数据库引擎应该以这种方式运行。