in 和 exists有什么区别,哪个效率高?还有他们和 联接有什么关系?

解决方案 »

  1.   

    不能一概而论!有些情况下Exists比In高
      

  2.   

    http://community.csdn.net/Expert/topic/4798/4798931.xml?temp=.3373224
      

  3.   

    sqlserver中
    几乎一样
    oracle中才又区别主要是因为两种数据库产品使用的优化算法不同
      

  4.   

    我在论坛上经常看到关于exsis与in效率的问题,大多数都说exsis比in效率高,昨天我把我的一个SQL2K的一个视图改了,原来用in的,现改为用exsis,同样的结果,数据只有4235行,用in不用1秒,用exsis耗时23秒.大侠们请分析分析:
    用IN(耗时0.01秒):SELECT *
    FROM dbo.判定结果
    WHERE ((工程编号 + 项目编号) IN
              (SELECT b.工程编号 + b.项目编号
             FROM 判定结果 AS b
             GROUP BY b.工程编号, b.项目编号
             HAVING SUM(b.检测项数) > 0))用EXSIS(耗时23秒):SELECT *
    FROM dbo.判定结果 a
    WHERE EXISTS
              (SELECT 1
             FROM dbo.判定结果 AS b WHERE a.工程编号 + a.项目编号 = b.工程编号 + b.项目编号
             GROUP BY b.工程编号, b.项目编号
             HAVING SUM(b.检测项数) > 0
          )