카테고리 없음

MSSQL EXISTS 구문의 서브 쿼리 평가

장형이 2023. 3. 12. 14:57
-- 테스트 테이블 세팅
CREATE TABLE Test1 
(
    uid		BIGINT
    CONSTRAINT PK_TEST1 PRIMARY KEY (uid)
)

CREATE TABLE Test2
(
    uid		BIGINT,
    score	BIGINT,
    CONSTRAINT PK_TEST2 PRIMARY KEY (uid)
)

INSERT INTO Test1 VALUES (1)
INSERT INTO Test1 VALUES (2)
INSERT INTO Test2 VALUES (1, 0)

-- Test2에 uid가 존재하는 uid만 출력하기.
SELECT * FROM dbo.Test1 AS A
WHERE EXISTS ( SELECT 1 
				FROM dbo.Test2 AS B
				WHERE A.uid = B.uid )

 

MSSQL에서 사용하는 EXISTS 구문은 서브 쿼리에 하나라도 값이 있다면 True가 되는 구문이다.

즉 서브 쿼리에 하나라도 값이 평가 되었다면 더이상 평가할 필요가 없으므로 바로 True를 리턴하게 되며, 그래서 속도가 매우 빠르다.

 

위 이유로 EXISTS 서브 쿼리를 SELECT TOP(1)처럼 할 필요 없다.