1. 程式人生 > >sql優化to_char 和 to_date 的使用

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')