我在我的存储过程中为 3 个不同的表触发了 3 个更新查询。每个表包含近 2,00,000 条记录,所有记录都必须更新。我正在使用索引来加快性能。它与SQL Server 2008配合得很好。执行一个存储过程只需12 到 15 分钟。(在所有三个表中在 1 秒内更新近 1000 行)
但是当我使用SQL Server 2008 R2运行相同的场景时,存储过程需要更多时间来完成执行。大约需要55 到 60 分钟。(在所有三个表中在 1 秒内更新近 100 行)。我找不到任何原因或解决方案。
我也用SQL Server 2012测试了相同的场景,但结果与上面相同。
这是我在存储过程中的 3 个表更新查询。
if (select COUNT(*) from table where conditions)>0
begin
update table1
set Coulmnname= @ColumnName
where Conditions
update table2
set Coulmnname= @ColumnName
where Conditions
update table3
set Coulmnname= @ColumnName
where Conditions
end
Run Code Online (Sandbox Code Playgroud)
执行计划
图 1
图 2
sql-server ×1