1

我有一个关于 MS SQL 的表,比如说 - TAB1,其中包含关键字段 KEY1 和 KEY2 以及值字段 COLUMN1。

它有一行值:KEY1 = A; KEY2 = B;第 1 列 = 123;

我想触发这个 SQL 更新:

UPDATE TAB1
SET    KEY1 = A,
       KEY2 = B,
       COLUMN1 = 999
WHERE  KEY1 = A
       AND KEY2 = B

我知道正确的 SQL 更新语句将是:

UPDATE TAB1
SET    COLUMN1 = 999
WHERE  KEY1 = A
       AND KEY2 = B 

但仍然......它会以某种方式影响更新速度、索引等。还是 MS SQL 足够聪明来处理这个问题?

先感谢您!

4

1 回答 1

0

我真的不明白在哪种情况下使用第一个查询而不是第二个查询有意义......

您可能不会在两个查询之间有明显的性能差异,但是如果您在这些列上有索引,则更新过程可能会对其产生影响并导致一些额外的执行时间(我不是索引专家,但在INSERT/DELETE/UPDATE每个一个索引列,修改对相关索引有影响。如果您使用相同的值更新可能不会有很大影响,但 SQL Server 直到在值之间进行检查时才会意识到这一点......)。

如果可能的话,我建议您使用第二种方法,您将获得更易读的查询,并且当您需要在几个月后回来处理您的代码时,一定要避免误解;-)

正如我所说,我不是专家,但在我看来,尽可能保持简单是最佳实践。

希望这会帮助你。

于 2014-09-03T21:57:46.490 回答