티스토리 뷰
exists
- 말그대로 존재하는지 안하는지 알아보는 연산자
in 이랑 역할은 비슷하지만 좀다름.
ex) in을 쓸 경우
select department_id, employee_id
from employees
where department_id in (30,60,90)
ex2) exists를 쓸 경우
select emp.department_id, emp.employee_id
from employees emp
where exists
(select dep.department_id
from departments dep
where dep.department_id in (30, 60, 90)
and emp.department_id=dep.department_id)
1)exists 는 뒤에 서브쿼리만 올 수 있다.
2) 그냥 row가 있는지 없는지 (존재하는지) 확인만 한다.(1개만 존재해도 조건 만족)
----> 그래서 in 보다 더 빨리 값을 처리하기때문에 나중에 튜닝할때나
서브쿼리를 써야될때는 exists가 훨씬 효율적
3)그래서 서브쿼리 select는 아무꺼나 와도됨 (ex. 1)
---> 값 확인안하고 걍 존재하는지만 확인하니까
4) 서브쿼리 안에서 조인해줘야됨
5) not 사용할때 not in 은 null 값 못 읽어서 nvl 함수 써줘야되지만 exists는 걍 읽음
( 왜냐면 3번째말하는데 그냥 존재여부만 확인하기때문에!!!!!!!!!)
'MODEL > ORACLE' 카테고리의 다른 글
[ORACLE] 집합연산자(UNION, UNION ALL,INTERSECT,MINUS) (0) | 2017.11.16 |
---|---|
[ORACLE] SUBQUERY 문 (0) | 2017.11.16 |
[ORACLE] ROLLUP 과 CUBE (0) | 2017.11.15 |
[ORACLE] DECODE & CASE 함수 (0) | 2017.11.15 |
[ORACLE] 연산자 및 기본 함수(LIKE,ROUNDADD_MONTHS,TO_CHAR 등등) (0) | 2017.11.15 |
댓글