티스토리 뷰

DataBase

서브 쿼리의 종류

LichKing 2017. 1. 1. 14:37

보통 하나의 완성된 쿼리 내에 존재하는 하위 쿼리들을 전부 서브 쿼리라고 총칭하기는 하는데 사용되는 위치에 따라 각각의 이름이 있다. 그냥 서브 쿼리라고만 부르면 큰 문제 없는데 간혹 이 명칭들을 이용해 의사소통이 이루어지는 경우가 있다. 이럴때 이 용어를 모르면 의사소통에 문제가 생기므로 정리해본다.


1. Nested Query (중첩 쿼리)

SELECT 절에 사용되는 서브 쿼리

SELECT (SELECT name FROM test) a FROM test;


2. Sub Query (하위 쿼리)

서브 쿼리의 명확한 사용처는 WHERE 절에 사용되었을 때다.

SELECT * FROM test WHERE name IN (SELECT name FROM test);


3. Inline View (인라인 뷰)

FROM 절에 사용되는 쿼리, 실행 계획에서는 Derived 라고 표현된다.

SELECT * FROM (SELECT * FROM test) tb;


4. Scalar SubQuery (스칼라 하위 쿼리)

위치에 따라 구분되는것이 아니라 결과에 따라 구분되는 용어. 컬럼과 로우가 1건이여서 단일 값으로 사용가능한 쿼리를 말한다. 주로 SELECT 절에 사용되어 Nested Query 와 혼용되어 사용된다.

SELECT (SELECT name FROM test LIMIT 1) a FROM test;


5. Row SubQuery (로우 하위 쿼리)

스칼라 쿼리의 경우 컬럼과 로우가 1건이였어야 하는데 Row SubQuery는 컬럼은 상관없고 로우만 1건인 경우를 말한다. 이 경우는 많이 쓰이지않는 것 같다.. 예제를 떠올려봤는데 거의 쓴적이 없는듯..

SELECT * FROM test INNER JOIN (SELECT * FROM test LIMIT 1) t ON test.name = t.name;

'DataBase' 카테고리의 다른 글

쿼리 캐싱 방지  (0) 2017.01.12
mysql 실행계획 2  (0) 2017.01.10
서브 쿼리의 종류  (0) 2017.01.01
mysql 실행계획 1  (0) 2017.01.01
mysql, mariadb 조인 쿼리 최적화 알고리즘  (0) 2017.01.01
자주사용하는 쿼리 모음  (0) 2016.12.30
공유하기 링크
TAG
댓글
댓글쓰기 폼