카테고리 없음
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)처럼 할 필요 없다.