sql優化to_char 和 to_date 的使用
1. to_char 優化成to_date,把"="左邊函式移到右邊
優化前:
select sum(POINT) as point , to_char(p.EXPIRE_DATE,'yyyy/mm/dd') as strParam
from MSTB_CUSTOMER p
where p.STATUS = 1
and to_char(p.EXPIRE_DATE,'yyyymmdd')>=to_char(sysdate,'yyyymmdd')
(需要優化的功能: 時間比較 , 忽略時分秒 , 只精確到日 )
優化後:
(from前面的 to_char(p.EXPIRE_DATE,'yyyy/mm/dd') 不影響效率)
select sum(POINT) as point , to_char(p.EXPIRE_DATE,'yyyy/mm/dd') as strParam
from MSTB_CUSTOMER p
where p.STATUS = 1
and EXPIRE_DATE>=to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd')
優化前:
select sum(POINT) as point , to_char(p.EXPIRE_DATE,'yyyy/mm/dd') as strParam
from MSTB_CUSTOMER p
where p.STATUS = 1
and to_char(p.EXPIRE_DATE,'yyyy-mm-dd') = '2018-12-04'
(需要優化的功能: 時間比較 , 忽略資料庫時間欄位的時分秒 , 精確到日
優化後:
select sum(POINT) as point , to_char(p.EXPIRE_DATE,'yyyy/mm/dd') as strParam
from MSTB_CUSTOMER p
where p.STATUS = 1
and p.EXPIRE_DATE >=to_date( '2018-12-04' || '00:00:00' , 'yyyy-mm-dd hh24:mi:ss')
and p.EXPIRE_DATE <=to_date( '2018-12-04' || '23:59:59' , 'yyyy-mm-dd hh24:mi:ss')