inner조인을 쓰고있는데 너무 시간이 오래걸립니다. ㅠ 0 5 923

by 겸둥이k 조인 [2021.09.02 15:28:44]


안녕하세요. db 초보자입니다 
카운트를 뽑아낼려고합니다.그런데 속도가 20초이상걸려서요 ㅠㅠ 
간단한 쿼리지만 건수가많아서 골치가 아프네요 ㅠ
3개테이블 모두다 몇백만건정도 되구요 inner 조인은 너무 비효율적인거같아서
left 조인으로 변경하면 효과적일까요? 저상태에서 어떻게 바꿔야할지 ㅠㅠ 

그리고 A테이블은 중심테이블이므로 DEPT_CDE  기준으로 리스트 파티션으로 나눴습니다. 
그리고 각각 인덱스도 태운 상태구요
좋은답변 부탁드립니다

SELECT
    COUNT(1) AS  "COUNT "
FROM
    test001 A,
    test002 B,
    test003 C
WHERE
    A.PSN_NO = B.PSN_NO
    AND B.ONR_NO = C.ONR_NO
    AND A.DEPT_CDE = '10'
    AND B.STTUS_CDE IN ('03' ,'04','05' )
    

 

by 우리집아찌 [2021.09.02 15:46:49]

outer join 으로 바뀌면 데이터가 변할수 있습니다다다른방법을 찾아보세요

 


by 마농 [2021.09.02 16:07:49]

글쎄요? 20초가 느린게 확실한 건지?
자료가 워낙 많아서 느린 걸 수도 있습니다.
지례 짐작으로 아우터 조인으로 바꾼다는 건 말이 안됩니다.
비효율 적인 요소를 찾아서 개선해야 합니다.
주신 정보만으로는 비효율이 안보이네요.


by 겸둥이k [2021.09.02 16:35:09]

답변감사합니다. a,b 가 500만건 c가 40만건 입니다. 

저기서 a테이블은 파티션으로 나눠서요 나누기전에는 3분이상 걸렸는데 나누니까 확실히 줄긴 줄더라구요 .

 보통 비효율적인 요소를 찾을려면 무엇을 찾으면 될까요?


by 마농 [2021.09.02 16:38:54]

관련 모든 정보요.
테이블 전체 건수/ 조건을 만족하는 건수
테이블간의 관계
테이블의 정보 : pk, index, 파티션 등
쿼리에서 사용되는 컬럼들의 특징
쿼리의 목적 및 특이사항
기타 등등


by 축구쟁이 [2021.09.03 11:26:22]

일단 inner조인의 성능에 영향을 많이 주는 부분부터 차례대로 확인해보시는 것이 좋겠습니다.

드라이빙 테이블이 a이고 500만건이라고 하셨는데 실제 조인에 사용되는(조건을 만족하는) 데이터가 몇 건인지 확인이 필요합니다.

드라이빙 테이블의 조회 건수만큼 데이터가 조인된다고 보시면 됩니다.

그래서 무조건적인 룰은 아니고 보통은 드라이빙 테이블을 데이터 조회 결과가 가장 작은 테이블로 지정합니다.

그러니 일단 해당 테이블부터 분석해보시고 막히시면 또 질문해주세요

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