if a <> b then
{block A}
else
{block B}
end if与if a = b then
{block B}
else
{block A}
end if的执行效率一样吗?

解决方案 »

  1.   


    如果你的a,b不存在为null的情况的话,则一样.
      

  2.   

    如果存在a、b有NULL值的时候就不一样了
      

  3.   

    一样的,只不过如果a,b有null值时可能执行的代码块不同
    看以下代码就清楚
    declare @a int,@b int
    set @a=1
    if @a=@b
      select 'a=b'
    else
    select 'a<>b'
    if @a<>@b
    select 'a<>b'
    else
        select 'a=b'
        
    set @b=1
    if @a=@b
      select 'a=b'
    else
    select 'a<>b'
    if @a<>@b
    select 'a<>b'
    else
        select 'a=b'结果
    ----
    a<>b(1 行受影响)
    ----
    a=b(1 行受影响)
    ----
    a=b(1 行受影响)
    ----
    a=b(1 行受影响)