본문 바로가기
DATA BASE

서브쿼리 (스칼라서브쿼리/인라인뷰/서브쿼리)

by Digital Audio Player 2022. 9. 14.

1. 서브쿼리 종류 

https://data-make.tistory.com/25

 

[SQL] 서브쿼리의 모든 것 - Sub Query, Inline View, Scalar, Multi Column

쿼리 안에 또 다른 쿼리 - Sub Query SELECT col1, (SELECT ...)  -- 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도)  FROM (SELECT ...)  -- 인라인 뷰(Inline View): 하나의 테이블..

data-make.tistory.com

 

 

# 서브쿼리 사용 할 때 -> group by / rownum / 필드 풀스캔 필요없을때 (필드가 많을시) 

 

# 일반적인 성능 -> join >> 서브쿼리 (메타데이터 없음) 

 

 # 스칼라서브쿼리는 성능하락 

 

 #  where 절 서브쿼리 사용시 IN 보다 EXITS 추천 ; 성능우세 ( + 부등호 사용법 : 위링크 참조)

https://runtoyourdream.tistory.com/112

  > > 다음과 같이 사용가능 

SELECT ... FROM ... WHERE EXIST ( SELECT 1 FROM ... WHERE....)

출처: https://rgy1989.tistory.com/entry/SQL-EXIST-NOT-EXIST [어쩌다 한번씩 쓰는 블로그:티스토리]

 

 

# FROM 절 인라인뷰 (서브쿼리) 의 사용이유 

https://wyatt37.tistory.com/36

   1. 특정 필드 별칭(임시필드) 조회 불가 (WHERE 혹은 연산불가 ) -> 인라인뷰로 해당 별칭 필드 참조 가능 

-- > 예 )

/* FROM 절에서 인라인뷰를 통해 임시 테이블을 만든 후, dens를 참조한다. */
SELECT name, dens
	,CASE
		WHEN dens > 1000 THEN '고밀도'
		WHEN dens > 100 THEN '중밀도'
		ELSE '저밀도'
	END densgrade
FROM (
	SELECT name, (popu * 10000 / area) AS dens FROM tCity
) CD;

        

   2. INNER JOIN , FROM T1, T2  / LEFT JOIN 에 붙이는 테이블을 풀스캔 예방차 미리 필터링해서 붙이면 성능상승

       ( ROWNUM / GROUP BY 를 사용하여 ROW를 줄여주고 사용할 필드만 기술하여 스캔할 필드수 감소)

 -- > 예  )

   

-- JOIN 방식

SELECT e.department_id, SUM(salary), AVG(salary), COUNT(*)
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY e.department_id
ORDER BY e.department_id;
 
-- INLINE VIEW 방식 
 
SELECT e.department_id, 합계, 평균, 인원수
FROM ( SELECT department_id, SUM(salary) 합계, AVG(salary) 평균, COUNT(*) 인원수
       FROM employees
       GROUP BY department_id ) e, departments d
WHERE e.department_id = d.department_id
ORDER BY e.department_id;

 

 

+ 추가 )  WHERE 1=1 이란 ?

https://hyjykelly.tistory.com/5

 

[MSSQL] WHERE 1=1이 뭐야? 왜 쓰는 거야?

회사에 입사하고 쿼리를 사용하면서 종종 보지만, 잘 이해가 가지 않는 구문이 생겼어요. WHERE 1=1 바로 요놈! 오늘 공부해보도록 할게요. Chapter 1. WHERE 1=1이 뭐야?? 우선, WHERE는 조회하려는 데이터

hyjykelly.tistory.com

 

'DATA BASE' 카테고리의 다른 글

인덱스(INDEX)  (0) 2022.09.20
NoSQL 이란 ? (비관계형 데이터베이스)  (0) 2022.09.20
[Oracle] 계층형 쿼리  (0) 2022.09.16
PARTITION BY / 분석함수 [ row_number() / rank() 등 ]  (0) 2022.09.15
DDL/DML/DCL/TCL/ [PL/SQL]  (0) 2022.09.13