날짜 조건중 어느것이 좋을지,, 0 10 1,107

by 우리집아찌 [SQL Query] 조건절 [2013.05.09 16:33:46]


2013년 5월만 조건을 걸고 싶은데 보통 어느것을 쓰시나요?
 

WITH T (col1,col2,col3)AS (
   SELECT chr(64+level) , level , TO_CHAR(SYSDATE + level * 5 ,'YYYYMMDD') 
   FROM DUAL CONNECT BY LEVEL <= 10
)

-- 이번달만 조건 걸고 싶습니다.
SELECT SUM(col2) FROM T
-- 1.번 WHERE col3 Like '201305' || '%'
-- 2.번 WHERE col3 BETWEEN '201305'||'01' AND TO_CHAR(LAST_DAY(TO_DATE('201305','YYYYMM')),'YYYYMMDD')
-- 3.번 WHERE col3 BETWEEN '201305'||'01' AND '201305'||'99'
by 부쉬맨 [2013.05.09 16:50:19]
상황마다다를꺼같은데.
전 1번

by 우리집아찌 [2013.05.09 16:58:00]

특별히 안좋은 조건은 없을까요? 


by 채용근 [2013.05.09 17:03:08]

저라면 굳이 고민은 안할듯 굳이 하라면 가독성 좋은 1번

by 우리집아찌 [2013.05.09 17:04:31]
SM 하는데 전부 골고루 써주셔서 통일하려구요..

by 채용근 [2013.05.09 17:06:35]

저런거 괜히 통일시키다 시스템 뻑이..... 조심히 하세요

by 우리집아찌 [2013.05.09 17:12:42]

수정하는것들만 일단 시작하려구요.
일단 1번으로 해야겠는데 아무도 1번을 안썼네요 ㅜㅜ


by 허승호 [2013.05.09 17:14:33]

1번 콜

by 우리집아찌 [2013.05.09 17:15:20]

모든분이 1번을 선호하시네요 ^^


by 마농 [2013.05.09 17:41:36]
1번은 간결해서 좋으나, 범위가 한정적이지 않음.
2번은 쿼리가 좀 지저분하지만. 범위가 명확함.
3번은 1번 보다는 범위가 한정적임. 3번처럼 사용하려면 범위를 더 제한하게끔 '99' 대신 '31'

성능면인 측면에서는 LIKE 보다 BETWEEN 이 더 낫다고는 하는데... 글쎄요...
아주아주 미미한 차이가 있을 수는 있는데 거의 없다고 봐도 무방할 듯 하구요.
아주 특수한 경우,
단일 인덱스가 아닌 결합인덱스인 경우에는 경우에 따라서 인덱스스캔범위에 차이가 있을 수는 있습니다.

by 우리집아찌 [2013.05.09 17:54:14]
어설픈 질문에 답변 주셔서 감사합니다. ^^*
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입