TABLE_A - 109790 row
TABLE_B - 110209 row
TALBE_C - 2541 row
TABLE_D - 12927 row
TABLE_E - 8119 row
TABLE_F - 7206 row
TABLE_G - 19 row
TABLE_H - 7 row
TABLE_I - 17 row
인 상황에 현재
------인덱스 컬럼 -------
A.EMPSEQ = B.EMPSEQ
A.EMPCD = C.EMPCD
C.EMPCD = D.EMPCD
C.EMPCD = E.EMPCD
C.EMPCD = F.EMPCD(+)
-------------------------
------인덱스 아닌 컬럼------
C.DIVCD = A.DIVCD
G.COMCD = A.DIVCD
H.COMCD = F.KINDCD
I.COMCD = F.AREACD
--------------------------
의 조인이 걸려있는상태입니다. 쿼리 튜닝이 처음인 초급개발자라 구루비에 있는 글 참고해서
기존 테이블 조회시 성능이 매우 떨어지는 부분들은 단일 테이블 조회시 0.1초대로 맞추어놓았습니다.
질문이 2개가 있는데
1. 해당 조인을 어떤 순서로 구성하는게 가장 효율적일지 궁금합니다. 그리고 LEADING 힌트를 사용하는 방식도 궁금합니다.
2. LIST를 불러오는 쿼리는 현재 15분이 지나도 실행되지않다가 DB가 뻗는 상황이였다가 15~20초로 줄였습니다. 하지만 ROW_NUMBER() OVER( ORDER BY 1,2,3,4) <-
정렬을 하는순간 성능이 급격하게 저하되는 상황입니다. 소트가 성능저하의 원인이라는건 알겠는데 이럴땐 보통 어떤부분이 문제인지 궁금합니다.
실행계획을 올려드리고싶은데 올리지못하는점 죄송합니다ㅠㅠ
스크린샷 안되나영?
보안이 높은 곳이라면 스크린샷 방지 솔루션에.. 휴대폰 카메라 보안 스티커.... OTL
아님 각 테이블마다, 특히 데이타 많은 A, B 테이블
개별 조회를 할 때 동일한 조건 값을 넣어 조회하면 속도 문제는 없을 거 같습니다.
실시간으로 3만건 이상 조회 발생이 많다면 ... 음..
서버 하드웨어적 환경 문제 검토 / 결과셋이 3만건이면 OLTP(온라인 트렌젝션) 환경이 아닌 거 같아요
3만건이 면 적지 않은데 램이 딸리거나 I/O 성능이 딸리거나..
원래 데이타는 3만건이 되지 않는데 조인하며 카티전곱(Cartesian product)으로 데이타가 곱하기 되었고 일단 출력 건수도 적지 않은데 항목수나 항목 내용까지 많다면(=물리적 접근 많아짐) 느릴 수 밖에 없을 거 같아용
카티전곱이기 때문에 코드성 조회가 많다면 스칼라서브쿼리를 이용하여 탐색한 데이터는 또 읽지않고 메모리에 있는 것을 쓰도록 서브쿼리를 이용하는 것도 효율이 발생할 거 같아용
아무튼 DB툴에서 페이징 처리해서 초단위로 떨어진다면 많은 데이터를 출력할 때 속도 문제로 보여용