使用另一个表中的值更新表的值

时间:2017-08-16 07:21:12

标签: sql sql-server

我在SQL Server中有table1

id    start    end     value        flag   main_name
----------------------------------------------------
 1      10     20.2    pending        T     abc
 2      22     11      pending        T     abc
 3      12.1   15      pending        F     abc

我有另一张桌子table2

id    start    end     value   flag    main_name
-------------------------------------------------
 1      10     20.2    x        T       abc
 2      22     11      y        T       abc
 3      12.1   15      z        F       abc

我想更新table1,其中pending的{​​{1}}的{​​{1}}值与来自table1的相应值相同的开头和结尾。< / p>

这只是一个例子,我在table1中有100k +记录。

我写了一个更新查询:

table2

但这需要花费很多时间!它每秒只更新3-4行! 我有100k +行要更新。

还有其他方法/查询优化来缩短时间吗?

*注意:除了&#39; abc&#39;

之外,该表还包含其他main_name值

1 个答案:

答案 0 :(得分:0)

光标是更好的选择,请阅读此答案https://stackoverflow.com/a/21148988/7942868。正如您在使用更新时所看到的,SQL将在DB上创建一个事务,因此会产生开销。