left join 관련 궁금한게 있습니다! 0 2 1,164

by 찐빵 [SQL Query] [2019.04.01 17:25:37]


안녕하세요.

오라클 초보입니다.

쿼리 튜닝을 하고 있는데 컬럼에 있던 SUM()이 느려서 left join 으로 변경해보니 

속도가 더 빨랐습니다.

여기서 궁금한게 있습니다.

 

1. explain 해보면 튜닝 후 table2가 full로 돌고 더 느릴거같은데 왜 더 빠른지 궁금합니다!

2. 아니면 속도 변화가 없는건지 기분탓인건지.. 초보라서 모르는게 많네요.

3. 튜닝후로 변경하면 결과물은 동일한건지도 궁금합니다.

감사합니다!

 

--튜닝 전
SELECT a.column1,
      a.column2,
      (SELECT SUM(column3)- SUM(column4) FROM table2 WHERE column5 = a.column6) AS sum_column
FROM
  table1
          
          
          
--튜닝 후
          
SELECT a.column1,
       a.column2,
       b.sum_column
FROM
  table1 a left join (SELECT column5, SUM(column3)- SUM(column4) as sum_column FROM table2 group by column5 ) b on b.column5 = a.column6

 

by 마농 [2019.04.01 18:02:06]

1. 스칼라서브쿼리는
  - 메인쿼리 건수만큼 반복 수행됩니다.
  - 메인 쿼리 결과 건수가 많으면 서브쿼리 반복 수행이 부담이 됩니다.
2. 조회 쿼리 결과는
  - column5 기준으로 집계되는 것이므로
  - 두 쿼리 결과는 동일합니다.


by 찐빵 [2019.04.02 09:29:34]

결과 건수(300건)가 많지 않아 빠르게 느껴졌나봅니다.

감사합니다 마농님!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입