728x90
반응형
스칼라 서브쿼리와 인덱스 뷰란?
스칼라 서브쿼리와 인덱스 뷰를 쉽게 이해하자면 위치로 구분할 수 있다.
아래와 같이 SELECT 와 FROM 사이에 있다면 스칼라 서브쿼리
SELECT (스칼라 서브쿼리) FROM (인덱스 뷰)
아래와 같이 FROM 절 뒤에 있다면 인덱스 뷰
SELECT (스칼라 서브쿼리) FROM (인덱스 뷰)
같은 목적을 가지고 쿼리를 실행시켰을 때 실행 속도가 아래와 같이 차이가 났다.
인덱스 뷰가 훨씬 빠르고 스칼라 서브 쿼리가 많이 느리다.
인덱스 뷰 | 스칼라 서브쿼리 |
SELECT A.SU_SEQ , B.PU_NAME FROM INFO JOIN USER B ON A.su_seq = B.PU_SEQ |
SELECT SU_SEQ , ( SELECT PU_NAME FROM USER WHERE PU_SEQ = SU_SEQ ) FROM INFO |
0.016 sec | 0.047 sec |
스칼라 서브 쿼리를 속도 걱정 없이 이용할 수 있는 경우
하지만 스칼라 서브 쿼리가 가끔 빠른 속도로 이용될 수 있다.
스칼라 서브 쿼리는 내부 캐싱기능이 있어서
값이 일정하다면 굳이 테이블을 모두 스캔하지 않고 기존의 캐싱된 값을 조회한다.
예를 들어 아래처럼 고정 값일 때는 스칼라 서브쿼리를 사용해도 굳이 크게 걱정하지 않아도 된다.
SELECT SU_SEQ
, ( SELECT PU_NAME
FROM USER
WHERE SU_SEQ = 1 )
FROM INFO
728x90
반응형
'개발중 > MYSQL' 카테고리의 다른 글
Mysql5 에서 rownum 과 그룹별 rownum (1) | 2022.09.02 |
---|---|
MYSQL 쿼리 활용 FIND_IN_SET (0) | 2022.05.23 |
Scala Subquery 와 Left Outer Join 의 성능차이 (2) | 2022.03.25 |
SQL TimeStamp 함수 (0) | 2021.10.18 |
[MYSQL] INSERT MAX + 1 (1) | 2021.10.12 |