본문 바로가기

개발중/MYSQL

스칼라 서브쿼리와 인덱스 뷰 성능 차이 알아보고 개선하기 !! 🚦

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