1:N 테이블을 여러개 LEFT조인해야 할경우 성능 이슈에 관련해서 질문이있습니다. 0 1 1,856

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를 사용하여 뽑아와야 합니다 이 테이블은 첫행을 뽑아야하는것도 아니구요.

어떤식으로 문제를 해결해야할까요 ??.. 

 

 

 

 

 

 

by 마농 [2020.05.21 13:28:06]

서브 집합을 우선 집계하여 1:1 로 조인하는 방안

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