ITPub博客

首页 > 数据库 > Oracle > IN和EXISTS

IN和EXISTS

原创 Oracle 作者:LuiseDalian 时间:2014-01-13 20:47:24 0 删除 编辑

很多时候需要将一列值和一系列的值做比较。最简单的办法就是在WHERE子句中使用子查询。

使用子查询有IN和EXISTS两种形式。几乎所有使用IN操作符的子查询都可以改变为使用EXISTS的子查询。

在绝大多数情况下EXISTS要比IN的效率高,因为EXISTS执行的是semijoin,所以在一些情况下,

不必遍历子查询表中的所有行。

点击(此处)折叠或打开

  1. --使用IN,访问路径选择的是hash join
  2. select first_name, last_name, department_id from employees
  3. where department_id in (select department_id from departments where location_id <= 1700);



点击(此处)折叠或打开

  1. --使用EXISTS,访问路径选择的是hash join semi
  2. select e.first_name, e.last_name, e. department_id from employees e
  3. where exists (select 1 from departments d where d.department_id = e.department_id and d.location_id <= 1700);


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1070169/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: NOT
下一篇: NOT IN与NOT EXISTS
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6040836