更新行或删除它并插入新行更快吗?

时间:2010-10-09 03:46:08

标签: sql sql-server sql-server-2005 performance sql-server-2008

在SQL Server 2008/2005上给出两个方案 - 1表有5行 2表有100万行

如果我们需要更新几行,那么效率是多少?为什么? 1)更新所需的列 2)使用更新的信息删除行和INSERT新行

2 个答案:

答案 0 :(得分:16)

你不应该问这个问题。你问的是“以更快的'一些含糊的想法的名义,以正确的方式或错误的方式做到这一点更好吗?”

你的应用程序有点太慢吗?你是否出于某种原因认为问题是因为你的UPDATE花了太长时间?您是否对数据库交互的性能进行了任何度量和基准测试?

您正在做的是过早优化最糟糕的类型,并且这样做会对您的应用程序造成伤害。你正在猜测如何加速你的代码,绝对没有任何基础。

正确编写代码。然后尝试找出存在性能问题的位置。你是否有性能问题,或者你只是因为你认为这是你应该问的问题而问这个问题?你不应该。

即使你特别DID有一个问题,你的UPDATE太慢了,我们也无法回答“X比Y更快”的问题,因为你没有给我们足够的信息,例如:

  • 您正在使用的数据库
  • 表格布局
  • 数据库中有哪些索引
  • 您如何与数据库连接

请正确编写代码,然后回过头来看一下速度太慢的细节,而不是猜测微优化。

答案 1 :(得分:2)

通常更新单行会更快。原因是删除现有行并插入新行,这两个操作都将影响聚簇索引。更新单行也会对各种索引产生影响,但不会影响聚簇索引。没有数据支持我的声明,但逻辑上数据库引擎应该以这种方式运行。