DATE 형 컬럼 인덱스 생성하기? 0 2 5,995

by 메시 [Oracle Tuning] DATE 인덱스 [2018.02.22 13:26:27]


일 40만건의 데이터를 비교하는 작업을 하는데요~

DATE 형 컬럼을 기준으로 필터해서 비교를 합니다.

아무래도 건수가 있다보니 인덱스를 추가하려고 하는데요

TO_CHAR(DATE,'YYYYMMDDHH24MISS') 이런식으로 형변환을 일자시분체크 해서 조회할것 같은데

그냥 DATE 걸어주면 되는지 형변환까지 같이 해서 생성해야하는지 궁금하네요

인덱스를 어떻게 걸어주는게 효과적을까요?

by 우리집아찌 [2018.02.22 13:51:45]

당연히 날짜는 DATE TYPE으로 컬럼을 만드셔야죠.. 

조회는

WHERE 날짜 = TO_DATE( '20180222135200' , 'YYYYMMDDHH24MISS')


by 마농 [2018.02.22 14:03:54]

date 타입으로 하고 컬럼에 인덱스 걸어주면 됩니다.
단, 조건 줄 때 컬럼을 다시 문자로 치환하여 비교하지 마시고
컬럼은 그대로 둔 채 조건값을 날짜로 치환하여 비교하셔야 합니다.
잘못된 예) TO_CHAR(dt, 'yyyymmdd') = '20180201'
올바른 예) dt >= TO_DATE('20180201', 'yyyymmdd') AND dt < TO_DATE('20180201', 'yyyymmdd') + 1
그리고 일 40만건이면 파티션 테이블로 관리하시는게 좋을 듯 하네요.

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