SQL更新零行的影响

时间:2018-04-05 15:30:29

标签: sql performance sql-update

更新零行是否有任何影响可能值得在进行更新前检查是否有符合条件的行?

表A的用户状态可以是1,2或3.表B具有小数值。如果表B中的十进制值大于35且表A中的用户状态为1,则更新为2.

目前我只是在更新中加入这两个,而不检查是否有要更新的记录。因此,如果表B的值为20,则没有要更新的行,或者如果表A中的用户已设置为2,则也没有要更新的行。我知道这有效,但是我想知道如果有任何vs事先执行select语句会产生什么样的影响,只有在有结果时才更新。

1 个答案:

答案 0 :(得分:1)

由于以下两个原因,您应该继续做您正在做的事情:

  • 检查说“您需要更新”可能是误报 - 在并发环境中,某些其他进程可能会在您的更新之前推送更新,但在检查之后,所以它会更好一次性执行更新
  • 额外的往返会扼杀性能 - 在大多数检查导致更新的情况下,您的往返次数几乎会增加一倍。往返RDBMS往往会比RDBMS内部的操作降低性能。

注意:以上假设读取和更新查询都已正确优化。