执行具有多列和多个更新的一个更新是否更有效

mit*_*tch 3 sql sqlperformance sql-server-2014-express

你觉得什么更好.即使没有更改所有值,也会每次更新表的所有列,或仅更新具有多个更新的已更改列.这个想法是,而不是立即更新每个更改,等待一些更改,然后更新所有列,但我不想实现一个逻辑谁确定哪些列已被更改.

UPDATE myTable 
SET col1 = newVal1, 
    col2 = oldVal2,
    col3 = newVal3,
   ... 
WHERE x = y
Run Code Online (Sandbox Code Playgroud)

UPDATE myTable SET col1 = newVal1 WHERE x = y
UPDATE myTable SET col3 = newVal3 WHERE x = y
...
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL Server 2014 Express.

Pரத*_*ீப் 7

第一个查询将执行得更好,因为它只需要scan/seek在表上执行单个查询.但是在第一个查询中,您可以更新具有要更新的新值的列:

UPDATE myTable 
SET col1 = newVal1, 
    col3 = newVal3,
... 
where x = y
Run Code Online (Sandbox Code Playgroud)

但是第二个查询scan/seek对于每个查询都有表,Update这比第一个查询需要更多的时间.