프로그래밍/SQL

(oracle) exists와 in의 차이

베아니체 2014. 12. 9. 09:04

일반적으로 EXISTS절이 더 우수한 성능을 보인다.

IN절과 EXISTS절은 동일한 액션을 취하는 것 같지만 세세하게 따지면 다르다.

EXISTS는 해당 DATA를 갖고 있는 ROW가 존재하는지만 체크하고 끝나나

IN은 실제 존재하는 데이터의 값을 모두 체크한다.


JOIN되는 COLUMN에 NULL을 갖는 ROW가 존재할 시에

NOT EXISTS 는 TRUE, NOT IN은 FALSE를 출력한다

NOT IN을 사용하면 조건에 맞는 데이터가 있어도 NULL이 있으면 NOT ROWS SELECTED가 나오게 되므로

NVL을 통한 NULL처리가 필요하다.


EXISTS절의 기본 형식을 아래를 따른다.


SELECT COLUMNS FROM TABLES WHERE EXISTS( CHECK값 );

'프로그래밍 > SQL' 카테고리의 다른 글

[MS-SQL] CPU 사용율과 메모리 사용율 관련  (0) 2018.12.10
varchar nvarchar차이  (0) 2018.04.18
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER  (0) 2013.06.17
트리거  (0) 2012.11.06
프로시저(Procedure)  (0) 2012.11.06