본문 바로가기
카테고리 없음

INDEX적용 - 인덱스를 사용하지 못하는 경우

by neomepulse 2023. 2. 6.

INDEX적용 - 인덱스를 사용하지 못하는 경우

1 NOT 연산자 사용

2 IS NULL, IS NOT NULL 사용

3 옵티마이저의 취사 선택

Optimizer의 자의적 판단에 의해서 인덱스를 사용할 수도 있고 사용하지 않을 수도 있는데, 이러한 것을 취사 선택이라고 함

Rule Base Optimizer는 정해진 규칙을 기준

Cost Base Optimizer는 비용을 기준

이러한 Optimizer의 자의적 판단으로 인한 잘못된 선택을 강제로 제어하기 위해서는 Hint를 사용

External Suppressing SQL 작성 오류 (Misunderstanding)

① 불필요한 함수를 사용한 경우

WHERE SUBSTR(ENAME,1,1) = 'M';

 WHERE ENAME LIKE ‘M%’;

② 문자열 결합

WHERE JOB||DEPTNO = 'MANAGER10';

 WHERE JOB = ‘MANAGER’ AND DEPTNO = 10;

DATE 변수의 가공

WHERE T

O_CHAR(HIREDATE,‘YYYYMMDD') = ‘20021016’;

 WHERE HIREDATE BETWEEN TO_DATE(‘20021016’,‘YYYYMMDD’) AND TO_DATE(‘20021016’,‘YYYYMMDD’)+0.99999;

④ 불필요한 NULL 처리

WHERE NVL(JOB,'NOJOB') = 'MANAGER'

 WHERE JOB = = 'MANAGER';

⑤ 산술식의 적용

WHERE SAL*12 > 40000;

 WHERE SAL > 40000/12;

External Suppressing – 개발자의 의도

사례 1 - 인덱스 사용여부 결정

WHERE STATUS = ’퇴직

WHERE STATUS = ’재직

 WHERE RTRIM(STATUS) = ’재직

사례 2 – 옵티마이저에 의한 취사 선택 WHERE STATUS = ’재직’ AND RESNO LIKE ’74%’

WHERE RTRIM(STATUS) = ‘재직’ AND RESNO LIKE ’74%’

사례 3 – 테이블 간 조인순서 제어

SELECT A.RESNO, A.GRENTDT, B.WEDDT FROM EMP_MASTER A, EMP_DETAIL B WHERE A.RESNO = B.RESNO AND RTRIM(A.GRENTDT) LIKE '1990%'

AND B.WEDDT LIKE '200210%';

Internal Suppressing – 연산식(Expression Evaluation)

VARCHAR2 or CHAR to NUMBER

VARCHAR2 or CHAR to DATE

간단한 연산식 Comm + ‘500’ 논리비교 연산식 Bonus > Sal / ‘10’ 함수호출 MOD (Sal, ‘1000’)

서로 다른 자료 형 간의 비교 시 발생

WHERE절 조건 WHERE Hiredate = ‘2003-01-01’

WHERE절 조건 WHERE Rowid = ‘AAAAaoAATAAAADAAA’

WHERE 문자형 칼럼(RESNO, VARCHAR2) = 숫자정보 (eg) WHERE RESNO = 7402191550521

WHERE TO_NUMBER(RESNO) = 7402191550521

Internal Suppressing – 할당(Assignment)

VARCHAR2 or CHAR to NUMBER

NUMBER to VARCHAR2

DATE to VARCHAR2

ROWID to VARCHAR2

HEX to VARCHAR2

VARCHAR2 or CHAR to DATE

VARCHAR2 or CHAR to ROWID

VARCHAR2 or CHAR to HEX

variable := expression

INSERT INTO table VALUES (expression1, expression2, ...)

UPDATE table SET column = expression

SELECT column INTO variable FROM table

4 외부적 변형(External Suppressing)

5 내부적 변형(Internal Suppressing)

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글