EX) SUBSTR(T1.ORD_YMD, 1, 6) = '201703' 보다는(INDEX FAST FULL SCAN)
T1.ORD_YMD LIKE '201703%'이 훨씬 낫다. (INDEX RANGE SCAN)
PREDICATE INFORMATION에서 FILTER와 ACCESS로 차이가난다.
t1.ord_ymd = 20170313 의 조건이
Predicate Information에서는
2-filter(TO_NUMBER("T1"."ORD_YMD") = 20170313) 으로 작동함
오늘 주문이 있는지 확인할려고할때 이렇게 전체조회하는것보다는
SELECT COUNT(*)
FROM TABLE
WHERE DT = '20170225'
AND CUS_ID ='CUS_0006'
한건만 읽어서 처리하는것이 훨씬 효율적이다.
SELECT NVL(MAX(1),0)
FROM DUAL
WHERE EXISTS(SELECT *
FROM TABLE T1
WHERE DT='20170225'
AND T1.CUS_ID ='CUS_0006')
dual~ EXISTS는 ROWNUM으로 대체가능
SELECT NVL(MAX(1),0) EX_DATA
FROM TABLE
WHERE CUS_ID ='CUS_0006'
AND ROWNUM<1;
이럴경우 그냥 M_CUS와 한번조인하는것이 낫다.
,(SELECT A.CUS_NM FROM M_CUS A WHERE A.CUS_ID = T1.CUS_ID) CUS_NM
,(SELECT A.EML_AD FROM M_CUS A WHERE A.CUS_ID = T1.CUS_ID) EML_AD