같은쿼리를 날리는데 처음에만 속도가 굉장히 느립니다. 0 4 12,311

by 미라클 [SQL Query] 쿼리 속도 처음에만 같은쿼리 [2013.10.16 10:59:24]



현재 운영중인 쿼리인데요. 한번 실행하고 나면 응답속도가 0.2초정도 나와 느린걸 못느끼는데요
이상하게 처음 쿼리를 실행할때만 20초넘게 걸리네요.
테이블 데이터는 9만건 정도고요 오라클버전은 10g입니다.
오라클에서 데이터를 메모리에 올리는데 시간이 걸리는건가요?
아니면 쿼리에 문제가 있는건가요? 원인이 뭔지 모르겠네요 ㅠㅠㅠㅠ

 SELECT  AA.*,
      SDO_GEOM.SDO_CENTROID (THE_GEOM, 0.000001).SDO_POINT.X CENTER_X,
      SDO_GEOM.SDO_CENTROID (THE_GEOM, 0.000001).SDO_POINT.Y CENTER_Y
  FROM  (SELECT  A.SEID,
           A.NAME,
           A.THE_GEOM,
           ROW_NUMBER () OVER (ORDER BY NAME, SEID) RN
       FROM  MAIN_TABLE A,
           (SELECT  DISTINCT (SEID) SEID
            FROM  CODE_TABLE C
            WHERE  1 = 1
                AND CODE LIKE 'CODE001' || '%') B
       WHERE  1 = 1
           AND A.SEID = B.SEID
           AND A.NAME LIKE '%' || '검색어' || '%') AA
  WHERE  RN >= 41 AND RN <= 48
ORDER BY  RN


위의 쿼리인데요 테이블명이랑 컬럼명만 공개용으로 바꾼거고 실제 쿼리랑 모양은 같습니다.

그리고 인덱스는 ....

MAIN_TABLE 에는
NAME컬럼에 인덱스
SEID컬럼에 UNIQUE인덱스
NAME, SEID컬럼에 인덱스가 걸려있구요
CODE_TABLE에는
SEID컬럼에 인덱스
CODE컬럼에 인덱스가 걸려었어요
by 발로차는새 [2013.10.16 11:05:06]
1. MAIN_TABLE 의 A.NAME LIKE '%' || '검색어' || '%' 조건 때문에 FULL TABLE SCAN 이 발생 하게 됩니다.

2. 처음 SQL 실행시 디스크에서 블럭을 읽으므로(물리 읽기 발생) 매우 느립니다.

3. 다음 SQL 실행시 이미 메모리에 올라와 있는 블럭을 읽으므로 빠릅니다.

4. FULL TABLE SCAN 으로 인해 메모리에 올라온 블럭은 빠르게 메모리에서 쫒겨나므로 조금만 시간이 지나도 2.번 상황이 됩니다.

참고) MAIN_TABLE.NAME 에 인덱스가 있어도 A.NAME LIKE '%' || '검색어' || '%' 조건은 인덱스를 활용하지 못합니다.

by 미라클 [2013.10.16 11:25:48]

빠른답변 감사드리고요 ..
어떻게 해결할수 있는지 해결방법도 알려주셨다면 더 좋았을것 같은데요 ....

by 용근님 [2013.10.16 11:29:29]

미라클 // 정확한 내용을 모르는데 어떻게 해결방법을 제시해드리죠.. ?

적어도 플렌정보 정도는 있고 질의 내용을 알아야 해줄수 있을꺼 같은데

by 아발란체 [2013.10.16 12:07:59]

인덱스는 정상적으로 탈 것 같은데,
ROWNUM 때문에 불필요한 스캔을 많이 하는 것 같습니다.
즉, ROWNUM 부분 걷어내고 실행하면 매우 빠르게 될 것 같습니다.

ROWNUM 부분이 문제라면 간단 명료한 답은 없고요,
하지만 관련 처리를 위한 아주 좋은 강좌가 있습니다.
이 강좌를 이해하시고 힌트 조정이나 인덱스 재구성을 통해
보다 빠른 성능 향상을 기대할 수 있습니다.

http://oracleclub.com/lecture/2242

페이징이 들어가는 모든 질의에 아주 유용하게 쓸 수 있는 보물 같은 강좌입니다. ㅎㅎ

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