有两个SQL更新语句有什么问题

时间:2018-02-24 13:40:47

标签: sql oracle sql-update

问题:以下陈述可能有什么问题?编写新的SQL。

Update table1
set col1= 'XXXXXXXX'
where col2 = 'BBC';

Update table1
set col3 = 123
where col2 = 'BBC';

我将新SQL编写为

Update table1
set col1= 'XXXXXXXX', col3 = 123
where col2 = 'BBC', ;

但是,我不确定有2个更新语句有什么问题。是否与独家锁相关?

谢谢大家。

1 个答案:

答案 0 :(得分:0)

UPDATE中,您可以(虽然有点简化)区分三种类型的费用

  • 访问更新的行
  • 锁定更新的行
  • 更新费用(评估新值并更改记录)

前两种类型多重与每个UPDATE语句相比,可以产生总的UPDATE成本 lion share (特别是如果访问费用昂贵,例如FULL TABLE SCAN )或表格被大量更新(导致LOCKS等待)。

所以你明确地不应该

  • 在几个UPDATE语句和
  • 中拆分一行的UPDATE
  • 如果您可以使用一个语句,则在单独的UPDATE语句中更新每一行。