Appearance
인덱스 작성 방법
1. 개발 전 테이블의 인덱스부터 확인하는 습관부터 가진다.
2. 인덱스는 내부 규칙에 맞게 설정한다.
3. 인덱스 전 주의 사항
인덱스 컬럼을 변형하여 비교하지 않기
- 안되는 형태:
AND TO_CHAR(TO_TIMESTAMP(WIP_LOT_PROCESS.TRACKOUT_DATE_TIME, 'YYYYMMDD HH24MISSFF3'), 'YYYYMMDDHH24MI') < '201801202359' - 괜찮은 형태:
AND WIP_LOT_PROCESS.TRACKOUT_DATE_TIME > TO_CHAR(TO_TIMESTAMP('202001130000' ,'YYYYMMDDHH24MI'), 'YYYYMMDD HH24MISSFF3')
테이블 인덱스 확인
sql
SELECT A.TABLE_NAME
, A.INDEX_NAME
, A.COLUMN_POSITION
, A.COLUMN_NAME
FROM USER_IND_COLUMNS A
WHERE A.TABLE_NAME = 'WIP_LOT' --테이블명
ORDER BY A.INDEX_NAME, A.COLUMN_POSITION인덱스 생성 삭제
인덱스 생성
sql
CREATE INDEX WIP_LOT_PROCESS_UIDX_02 ON WIP_LOT_PROCESS( SITE, TRACKOUT_DATE_TIME );인덱스 삭제
sql
DROP INDEX WIP_LOT_PROCESS_UIDX_02;실행계획으로 특정 INDEX를 타도록 수정
sql
SELECT /*+ INDEX(A IX_TEST_03) */
B.COLUMN1
, A.*
FROM TEST A
INNER JOIN TEST2 B ON B.COLUMN2 = A.COLUMN2
WHERE 1 = 1
AND B.USE_YN = 'Y'
AND B.COLUMN1 = '3003037817'
AND A.COLUMN3 BETWEEN TO_DATE('20220901', 'YYYYMMDD') -90 AND TO_DATE('20220901', 'YYYYMMDD')Reference
- DB에서 인덱스 제대로 사용하기: https://firedev.tistory.com/entry/Oracle-DB에서-INDEX-제대로-사용하기
- ORACLE 인덱스(Index) 개념/종류/주의사항/활용,관리: https://rongscodinghistory.tistory.com/113