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.
第一个查询将执行得更好,因为它只需要scan/seek在表上执行单个查询.但是在第一个查询中,您可以更新具有要更新的新值的列:
UPDATE myTable
SET col1 = newVal1,
col3 = newVal3,
...
where x = y
Run Code Online (Sandbox Code Playgroud)
但是第二个查询scan/seek对于每个查询都有表,Update这比第一个查询需要更多的时间.