exists ?:)从表面上来看,这两条语句都是逐条判断的

解决方案 »

  1.   

    从表面上来看,exists是逐条判断的,有符合条件就退出;in不是逐条判断的,返回记录集,再判断是否在里面
      

  2.   

    所以大部分情况exists比in效率高
      

  3.   

    返回记录集需要判断所有记录
    逐条判断 本来并不快,但是它可以 在有符合条件的记录就退出
    一般情况下,判断所有记录总是比判断部分记录慢些的exists的效率实际跟子查询的数据也有很大关系
      

  4.   

    exists:先判断再查询
    in:先查询再判断
    exists效益高
      

  5.   

    exists呵呵 写错两者都逐条判断的吧exists是判断完再组合记录集in是先取记录集合,再判断筛选,为什么速度会比in快实在想不明白
      

  6.   

    USE pubs
    GO
    SELECT DISTINCT pub_name
    FROM publishers
    WHERE EXISTS
       (SELECT *
       FROM titles
       WHERE pub_id = publishers.pub_id
       AND type = 'business')
    GO-- Or, using the IN clause:USE pubs
    GO
    SELECT distinct pub_name
    FROM publishers
    WHERE pub_id IN
       (SELECT pub_id
       FROM titles
       WHERE type = 'business')
    GO
    看看这个例子,就知道了