Skip to content

인덱스 작성 방법

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