SELECT 那么 UPDATE 与仅在 SQL 服务器存储过程中的 UPDATE 一样高效

Is a SELECT then UPDATE as efficient as an UPDATE only in SQL Server Stored Procedure

如果我的存储过程中有这样的代码。 SELECT 和 UPDATE 之间没有代码,只是对返回的数据进行了一些检查,如果数据不正确则发生抛出。:

SELECT col1 FROM b WHERE c = @c
UPDATE b SET col2 = 99 WHERE c = @c

我能否期望它执行与以下相同数量的数据访问:

UPDATE b SET col2 = 99 WHERE c = @c

请注意,我这样做的原因是我想在第一个 select 之后检查行数,并在开始更新之前抛出一个错误。如果没有性能差异,它只会让我的代码在这种情况下看起来更清晰。

有区别,它会做2次操作,但是如果你需要有col1值可以这样做:

UPDATE b SET @col1 = co1, col2 = 99 WHERE c = @c

或者如果你需要更复杂的东西比如之前的值,那么你可以使用输出

update b set col2 = 99 output deleted.col2 WHERE c = @c