因为两个出来的结果是一样,而exists的效率要高,它是找到符合条件就直接返回。所以可以代替

解决方案 »

  1.   

    因为两个出来的结果是一样,而exists的效率要高,它是找到符合条件就直接返回。所以可以代替
      

  2.   

    EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果                                
    -->经测试此写法SQLplus下比上面的写法多一次逻辑读,而在Toad下两者结果一致这个也是从别人那里看到的, 出处不记得了
      

  3.   

    当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT。一般可以考虑用EXIST替换, EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果
    其中X的意思:
    因为exists只是看子查询是否有结果返回,而并不关心返回的是什么内容,因此通常建议写一个常量,至少性能不可能比select 一个具体的字段出来差,而某些情况下,select具体的字段出来性能可能比select 一个常量出来要差得多。
      

  4.   


    也就是说,若不是提交一个包含一对多表信息的查询EXISTS就不能起到替代DISTINCT的作用?
      

  5.   

    用EXISTS,只要找到第一个符合条件的值,就返回了,而不管后面有多少条符合条件的重复记录。
    而DISTINCT,是全扫描,必须查找全部符合条件的记录后,再返回唯一值。这样一来,性能差异就大了。