안녕하세요!
글 제목 그대로 입니다.
date 타입의 컬럼 aa가 있다고 가정 할때
1. aa>= trunc(sysdate)
2.to_char(aa, 'yyyymmdd') = to_char(sysdate, 'yyyymmdd')
1,2 의 차이점을 알고 싶습니다.
혹시나 aa 칼럼이 index 여부에 따라서 어떻게 틀려지는지 답변 달아 주시면 감사하겠습니다.
감사합니다.
테이블 전체 데이터가 100만건, 하루 입력량 천건으로 가정.
1. 날짜컬럼에 인덱스 존재할때 - 1번은 필요한 데이터만 읽음, 인덱스 스캔(천건) + 테이블랜덤엑세스(천건) - 2번은 전체데이터를 모두 읽음, 테이블 풀스캔 (100만건) 2. 인덱스가 없을때 - 1번의 함수 사용횟수는 trunc 1회 - 2번의 함수 사용횟수는 to_char 100만회 + to_char 1회
결론은. 인덱스가 있건 없건 간에 컬럼을 가공하지 말고 조건값을 가공하는 것이 좋다.
항상 답변 달아 주시는 마농님 감사합니다.
저도 마농님이 말씀해 주신 점과 비슷하게 생각을 하고 있습니다.
일단 현재 전체 데이터가 100만건 가량 되지는 않습니다.
1, 2 의 조회 결과 처리 시간이 당연히 1이 빠를거라 생각했는데
2의 결과가 더 빠르게 나와서 의문이 들어서 문의를 드렸습니다.
마농님의 답변 1,2 모두의 경우 데이터의 건수와 상관 없이
1의 결과가 시간이 빠르다는것을 말씀해 주시는거 같습니다.
제 예상과는 결과가 틀리게 나와서 문의 드렸습니다.
답변 감사합니다 마농님!
일단, 실행계획을 비교해 보세요.