none
加if exists (select someproperty from TableA with nolock where id=@id) 有什么作用吗? RRS feed

  • 问题

  • 加if exists (select someproperty from TableA with nolock where id=@id) 对后面的update什么作用吗?

    if exists (select someproperty from TableA with nolock where id=@id) update from TableA set property1=somevalue where id=@id

    这个语句会执行很多很多次。加上if exists可不可以加快速度?或者说可以增加并发?或者会不会在某种情况下出现脏读?前面的if exists语句中的nolock会不会影响到后面的update语句。

    请高手帮忙。。

     

     

     


    Looking Forward To Amazing Life~
    2011年3月20日 8:22

答案

  • 加上if exists可不可以加快速度?

    不会,这个判断需要读取数据,会带来一定的性能消耗。

    或者说可以增加并发?

    对并发也没有什么关系,update对同一个数据的更新是有sql server本身控制。

    或者会不会在某种情况下出现脏读?

    with(NOLOCK)本身就是脏读。

    前面的if exists语句中的nolock会不会影响到后面的update语句。

    这个if判断的作用是,如果存在这个id,就将id对应的记录的某个字段属性修改。如果没有这个id,update语句不会执行。这个做法一般不合适,直接写update,如果id不存在sql server也是不会更新任何数据的。


    family as water
    • 已标记为答案 Ai-hua Qiu 2011年3月27日 2:52
    2011年3月20日 14:09