请问用这个select * from proddta.f4211 where (sddoco =18000048 or sddoco = 18000049 )SQL语句能不能代替以下SQL语句select * from proddta.f4211 where sddoco in( 18000048 ,18000049 )
它们之间有区别吗?

解决方案 »

  1.   

    我在一本书上看到这么一个知识点(不知道是我当时没看懂,还是,反正有些概念模糊了,请大家帮忙纠正一下)select * from proddta.f4211 where (sddoco =18000048 or sddoco = 18000049 )以上SQL,OR关键字的前一个条件满足了,就不会再继续查找下一个条件了。请大家帮忙解释下,谢谢各位了。
      

  2.   


    没区别。
    只是in需要解析成or的形式
    会稍微慢一点儿,不过,无碍...
      

  3.   

    一样的,只是在效率上有区别,or进行了两次全表扫描,in一次
      

  4.   

    错了,说反了,in2次,or一次,因为in要先转化成or
      

  5.   

    可以替换两种方法。区别的话,有的书上说是一样,但是我个人感觉,用in好。SQL Server优化器会将in操作编程联接操作,而or操作则会多次扫描目标表。