안녕하세요. 조인시 테이블 성능 저하로 문의드립니다.
우선 그룹 테이블과 그룹상세 테이블 2개가 있습니다.
그룹(1) : 그룹상세(N) 구조가 되겠습니다.
그룹상세에는 현재 테스트로 120만건 정도 넣어놨습니다.
(예상은 저보다 많은 1200만건 정도 예상됩니다.)
그런데 페이지 로드시 꽤 오래 걸리네요..
갯수검색 쿼리
SELECT COUNT(B.NO) AS CNT FROM T_ADDR_GROUP A, T_ADDR_DETAIL B WHERE A.NO = B.PARENT_NO AND B.USER_ID = ?
페이징 리스팅 쿼리
SELECT * FROM (
SELECT /*+ INDEX_DESC(PK_T_ADDR_DETAIL) */ ROWNUM AS RNUM, X.* FROM (
SELECT A.NAME AS GROUP_NAME, B.* FROM T_ADDR_GROUP A, T_ADDR_DETAIL B WHERE A.NO = B.PARENT_NO AND B.USER_ID =?
ORDER BY B.NO DESC
) X WHERE ROWNUM <= ?
) WHERE RNUM >= ?
쿼리는 위와 같습니다.
조인을 하는 이유는, 그룹명 검색을 위해서입니다. 그게 아니면 조인할 필요는 없는 상황입니다.
첫 페이지에서 저 페이징 쿼리를 타면 8 초정도 걸립니다.
*인덱스는 각 테이블에 기본키 NO 필드에 잡혀 있습니다. 그외는 없습니다.
어디가 문제일까요?