반응형
이번 포스트에서는 EXISTS라는 집합연산자에 대해서 알아본다. 한 셋 / 테이블 안에 특정 데이터가 존재하는지 여부를 판단하기 위해 사용하며 존재 여부를 파악한 후에는 작동을 멈추기 때문에 성능면에서도 모든 내용을 비교해야 하는 타 연산자들에 비해 목적에 따라 성능적 이익을 취할 수 있다.
EXISTS
01 EXISTS : 존재하는 지만 궁금하다
데이터의 양에 상관없이 존재 여부만으로 다른 작업을 시행할지 말지를 결정하는 경우가 있다. 이럴 경우 그 특정 데이터가 일단 하나만 존재하는지 알면 된다. 그럴 때 사용하는 것이 EXISTS이다. 일단 쿼리를 어떻게 작성하는지 살펴보자.
SELECT M.COL1, M.COL2
FROM TABLE M
WHERE EXISTS (SELECT 1 FROM SUB_TABLE S WHERE S.COL='VAL')
;
EXISTS절 내의 SUB_TABLE에서 COL이란 컬럼 안에 VAL이란 값이 존재한다면 메인 쿼리 내의 TABLE에서 COL1과 COL2값을 보여준다. 서브쿼리에서 SELECT절에서 1을 사용한 이유는 WHERE 절이 TRUE인 경우 SELECT절이 읽어질 때 1값을 반환하기 위해서 이다. 1은 TRUE라는 의미이기 때문에 메인절의 WHERE절 전체가 TRUE가 되는 효과가 나타난다.
EXAMPLE
봉사활동 신청 학생이 있다면 올 해 봉사활동 가능한 기간의 리스트를 알려주세요.
SELECT A.기관, A.신청기간
FROM 봉사활동기관리스트 A
WHERE EXISTS ( SELECT 1 FROM 학생명단 S WHERE S.봉사활동신청 = TRUE )
;
02 EXISTS의 성능적 이점
EXISTS 연산자의 특징은 일단 원하는 결과가 나오면 연산을 멈춘다는 것이다. 때문에 여부만 알면 될 경우 모든 테이블을 읽으면서 발생하는 데이터베이스 서버 리소스 낭비를 줄일 수 있다.
SUMMARY : EXISTS
- EXISTS 연산자는 WHERE절 내에서 특정 데이터가 존재하는 지 여부만을 판단할 때 사용가능하다.
- 원하는 데이터를 찾으면 연산을 멈추기 때문에 데이터베이스 리소스 낭비를 막을 수 있다.
반응형
'ICT > SQL' 카테고리의 다른 글
SQL 문법 | 데이터 조회 및 필터 | WITH (0) | 2021.09.22 |
---|---|
SQL 문법 | 데이터 조회 및 처리 | CASE WHEN THEN ELSE END (0) | 2021.09.20 |
SQL 문법 | 집합연산자 | ALL (0) | 2021.09.19 |
SQL 문법 | 집합연산자 | ANY (0) | 2021.09.18 |
SQL 문법 | 데이터 조회 및 필터 | WHERE IN (0) | 2021.09.17 |
댓글