date 컬럼 검색시 속도향상에 가장 좋은 방법이 무언가요? 0 4 1,414

by 후레쉬 [2014.07.05 10:29:30]


안녕하세요..

 

tbl의 column_date 데이타 타입은 date 입니다.

파라미터가 문자열로

1. '2014-06-25', '2014-07-14' 이런식으로 2개가 넘어 오는 경우 (시작날짜,종료날짜)

2. '2014-06-25', '09', '2014-06-25', '18' 이런식으로 4개가 넘어 오는 경우 (시작날짜,시작시간,종료날짜,종료시간)

 

이럴경우

1번의 경우는  select * from tbl where where column_date between '2014-06-25' and '2014-07-15'

(7월15일까지 해야 14일 23시59분59초까지 포함이 되잖아요.)

이게 속도 향상에 가장 좋은 방법 맞나요? 아니면 column_date 이 컬럼을 to_char 를 사용해야 더 빠른가요?

 

그리고

2번의 경우는 어떤 쿼리문이 속도향상에 가장 좋은가요?

 

답변 부탁 드립니다.

 

by 마농 [2014.07.05 17:20:08]
- 변경전 : 컬럼을 변형(to_char)하여 상수와 비교
- 개선후 : 상수를 가공(to_date)하여 컬럼과 비교

by 후레쉬 [2014.07.05 20:48:27]

답변 감사드립니다. where 절에서 컬럼을 to_char 하는게 속도가 빠르나요? 변수를 to_date 하는게 빠른가요?

아. 그리고, 변경전.. 개선후.. 의미를 이해를 못했습니다.;;


by 크레디앙 [2014.07.05 21:44:11]

오늘 세미나 내용에서 나온 문제군요; 컬럼 자체를 TO_CHAR하게 되면 인덱스를 사용하지 못하게 되므로

DATE컬럼은 놔두고 검색하는 값인

column_date between TO_DATE('2014-06-25', 'YYYY-MM-DD') and TO_DATE('2014-07-15', 'YYYY-MM-DD')

이런식으로 하는게 좋다는거죠


by 후레쉬 [2014.07.06 23:39:21]

크레디앙님 답변 감사드립니다 ^^

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