오라클 쿼리에서 DATE 타입이 CHAR 타입보다 빠른가요?

민봉기   
   조회 5236   추천 9    

다음과 같은 두개의 쿼리는 결과는 똑같으며
date 타입을 썼느냐 char 타입을 썼느냐면 다릅니다.

(1)
        SELECT u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME
                   ,u.TOTAL_VALUE
                   ,u.TOTAL_NUM
                   ,u.MIN_VALUE
                   ,INST1.fnpempa9001(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME, u.MIN_VALUE) MIN_TIME
                   ,u.MAX_VALUE
                   ,INST1.fnpempa9002(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME, u.MAX_VALUE) MAX_TIME
                   ,INST1.fnpempa9003(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME) LAST_VALUE
                   ,INST1.fnpempa9004(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME) LAST_TIME
        FROM (SELECT OBJECT_ID, DATE_DAY, DATE_TIME
                                   ,SUM(VALUE) TOTAL_VALUE
                                   ,COUNT(VALUE) TOTAL_NUM
                                   ,MIN(VALUE) MIN_VALUE
                                   ,MAX(VALUE) MAX_VALUE
                        FROM (
                                 SELECT OBJECT_ID,VALUE_HISTORY_ID, VALUE, DATE_DAY, DATE_TIME
                                 FROM (SELECT a.OBJECT_ID, a.VALUE_HISTORY_ID, a.VALUE
                                                                ,TO_CHAR(a.TIMESTAMP,'YYYYMMDD') DATE_DAY
                                                                ,TO_CHAR(a.TIMESTAMP,'HH24') DATE_TIME
                                           FROM INST1.TSPEMPA60 a, INST1.TSPEMPA50 b
                                           WHERE a.OBJECT_ID = b.OBJECT_ID
                                                             --AND b.NODE_NAME = 'atmsdb1' /*Input - 서버명*/
                                          )
                                 WHERE 1=1
                                            AND DATE_DAY = '20070227' /*Input - 날짜*/                                
                                )
                        GROUP BY OBJECT_ID, DATE_DAY, DATE_TIME
                ) u

(2)
        SELECT u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME
                   ,u.TOTAL_VALUE
                   ,u.TOTAL_NUM
                   ,u.MIN_VALUE
                   ,INST1.fnpempa9001(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME, u.MIN_VALUE) MIN_TIME
                   ,u.MAX_VALUE
                   ,INST1.fnpempa9002(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME, u.MAX_VALUE) MAX_TIME
                   ,INST1.fnpempa9003(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME) LAST_VALUE
                   ,INST1.fnpempa9004(u.OBJECT_ID, u.DATE_DAY, u.DATE_TIME) LAST_TIME
        FROM (SELECT a.OBJECT_ID, DATE_DAY, DATE_TIME
                                   ,SUM(VALUE) TOTAL_VALUE
                                   ,COUNT(VALUE) TOTAL_NUM
                                   ,MIN(VALUE) MIN_VALUE
                                   ,MAX(VALUE) MAX_VALUE
                        FROM INST1.TSPEMPA60_T a, INST1.TSPEMPA50 b
                        WHERE a.OBJECT_ID = b.OBJECT_ID
                                             AND b.NODE_NAME = 'atmsdb1' /*Input - 서버명*/
                                         AND DATE_DAY = '20070227' /*Input - 날짜*/
                        GROUP BY a.OBJECT_ID, DATE_DAY, DATE_TIME
                ) u


데이터는 원시 테이블의 데이터 건수가 천만건 이내이며
속도는 (1)번 쿼리가 (2)번 보다 30배 정도 빠릅니다.
유일한 차이는 TIMESTAMP라고 되어 있는 컬럼이 DATE 타입으로 정의되어 있는데
이 부분이 DATE_DAY와 동일하게 타입만 다른것이거든요.

원래 DATE 타입이 빠른건지... 이정도로 빠른건지 알고 싶습니다.
아님 속도 차이가 나는데 다른 요인이 있었던 건지...

인덱스는 (1)경우에 OBJECT_ID 에 걸려 있으며
(2)경우에 OBJECT_ID 그리고 NODE_NAME, DATE_DAY에 걸려 있는 상태입니다.
짧은글 일수록 신중하게.


QnA
제목Page 4557/5726
2015-12   1774582   백메가
2014-05   5249311   정은준1
2007-03   5143   김상일
2007-03   5136   김재민
2007-03   4790   윤한신
2007-03   5237   민봉기
2007-03   4601   서욱
2007-03   5269   임철혁
2007-03   5206   박종성
2007-03   4946   김재헌
2007-03   5186   이희원
2007-03   5119   김준규
2007-03   4789   최연준
2007-03   5261   윤호용
2007-03   4689   윤호용
2007-03   4736   정재훈
2007-03   9142   김현호
2007-03   4398   이길원
2007-03   5584   이제호
2007-03   4766   노형석
2007-03   4856   오성기
2007-03   4815   강동오