是否可以执行INSERT + UPDATE + DELETE vs DELETE + INSERT?

时间:2016-09-06 00:17:47

标签: sql-server sql-server-2008

我正在使用SQL Server 2008,这类问题(INSERT + UPDATE vs DELETE + INSERT)被问了很多次,但根据我的理解,我的情况有点不同。请参阅下面的附图。

我有一张表BOM,但稍后我需要更新数量,插入新材料,不需要材料,所以我删除了。

我的问题是:对于一张非常大的桌子(10M +行)

  1. 是否可以执行INSERT + UPDATE + DELETE?
  2. 如果是,是否比使用DELETE + INSERT更好?
  3. 我搜索了问题/答案是针对案例1的,但我需要案例2的解决方案。

    enter image description here

1 个答案:

答案 0 :(得分:0)

这取决于表/索引结构,触发器等。

在某些情况下,您可以执行UPDATE语句,但实际上可以在后台执行DELETE / INSERT操作。

在某些情况下,使用“软删除”更快 - 只需将行标记为已删除,然后,在安静时间(周末),您可以安排物理删除行,对索引进行碎片整理等。您可以使用MERGE命令一次执行INSERT / UPDATE / DELETE,但需要测量性能,将其与单个INSERT / DELETE / UPDATE语句进行比较。在许多情况下,我更喜欢先删除,然后更新,最后插入。

它还取决于更改行的数量...有时将数据移动到新表(堆)更快,然后在那里创建索引,最后删除/重命名表。