기존 수행 플랜을 따르지 않는 이유는 무엇인가요? 0 4 5,499

by 윤 [Oracle 기초] ORACLE INDEX hint 실행계획 [2022.05.09 17:54:52]


기존에 문제없이 수행되던 쿼리가 별도의 변경없이 갑자기 수행 시간이 늘어났습니다.

그래서 확인 요청을 드리니 기존과 다른 수행 플랜을 갖는다고 하셨는데요

갑자기 디비의 수행 플랜이 변경되는 경우가 있나요???

 

 

아래는 관련 쿼리입니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT /*+ USE_MERGE(A,B) INDEX(A CARDIDX) */
    COUNT(*)
FROM
    (SELELCT /*+ INDEX (CARD CARDIDX)*/
        CARD_NO
         , TRANS_YMD
         , STATS_CD
         , GB_ID
         ...
    FROM CARD, ACCOUNT
    WHERE CARD.TRANS_YMD LIKE '202205' || '%'
        AND CARD.STATS_CD = '01'
        AND CARD.GB_ID = ACCOUNT.GB_ID) A
(
....
....)B
WHERE
.......

 

기존에는 /*+ INDEX (CARD CARDIDX)*/  가 없었는데

이번에 문제가 발생하면서 계획한 수행 플랜을 따르기 위해 추가된 힌트입니다.

by 우리집아찌 [2022.05.10 09:34:57]

통계정보 수정되면 플랜 바뀌기도 합니다. 그래서 운영중에 통계정보수집을 잘안하죠.


by 윤 [2022.05.10 10:07:26]

아하 답변 감사합니다 :)


by 마농 [2022.05.10 09:49:16]

1. 데이터량 증가에 따른 통계정보 변경
2. 인덱스 추가, 제약조건 추가 등의 테이블 정보 변경
3. DB 시스템 설정 정보 변경


by 윤 [2022.05.10 10:07:01]

답변 감사합니다!! :D

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