by 아리시마 [SQL Query] SQL [2020.05.21 12:57:06]
상황
데이터 10만(메인), 10만(메인 inner join) 50만건(서브) 8만(서브)
1. 두개의 테이블이 메인 테이블이 key로 inner 조인 되있습니다.
2. 각각의 서브 테이블들이 ( 메인테이블의 key로 1:N )
select시 left 조인을 사용하여 값을 가져옵니다.
50만건짜리 테이블은 서브쿼리로 각 키값의 첫행만 뽑으면되서 기존 10~12초정도 쿼리에서 (기존 LEFT조인시 group by가 오래걸려서 ..)
2초정도까지 줄어들긴 했습니다. (서브쿼리에서 key끼리 조건걸고 rownum =1 함 )
한개의 테이블을 추가로 LEFT JOIN해야하는데 붙이면 2초
제거시 0.4초정도의 시간이 소요되더라구요..
이테이블도 마찬가지로 1:N이기때문에 group by 혹은 distinct를 사용하여 뽑아와야 합니다 이 테이블은 첫행을 뽑아야하는것도 아니구요.
어떤식으로 문제를 해결해야할까요 ??..