系統優化心得(一)

從接收負責運維項目以來,用戶老是會提出各類優化課題。數據庫

數據庫服務器,應用服務器的管理由basis負責,本身申請去查看數據庫執行日誌幾乎是不可能的事情,無奈只能不斷的看代碼,分析代碼,一行一行。服務器

針對近期遇到的問題作一下記錄session

①oracle標準時間格式的比較比字符串格式的時間的比較效率要高的多。oracle

② join...on的後面若是是隻有一個條件,使用單值索引運維

 select * FROM scf2.A  a
  INNER JOIN scf2.B  b
     ON b.sessionid = a.sessionid
  INNER JOIN scf2.E  e
     ON substr(e.c_pzh, 3, 10) = b.gr_gi_slip_no
  WHERE 1 = 1   
    AND B.PSTNG_DATE >= '2015.01.11'
    AND B.PSTNG_DATE <= '2015.01.12'
    AND B.doc_date >= '2015.01.01'
    AND B.doc_date <= '2015.01.12'
    AND a.plant = '8812'
    AND a.status IN ('3')
    AND A.STGE_LOC = '2103';優化

竟然跑了5分鐘都沒有看到結果展示。日誌

改爲索引

 AND a.plant = '8812'
    AND a.status IN ('3')
    AND A.STGE_LOC = '2103';
    ON substr(e.c_pzh, 3, 10) = b.gr_gi_slip_no
 WHERE 1 = 1   
   AND to_date(B.PSTNG_DATE, 'yyyy.mm.dd') >=
       to_date('2015.01.01', 'yyyy.mm.dd')
   AND to_date(B.PSTNG_DATE, 'yyyy.mm.dd') <=
       to_date('2015.02.01', 'yyyy.mm.dd')
   AND to_date(B.doc_date, 'yyyy.mm.dd') >=
       to_date('2015.01.01', 'yyyy.mm.dd')
   AND to_date(B.doc_date, 'yyyy.mm.dd') <=
       to_date('2015.02.01', 'yyyy.mm.dd')
    AND a.plant = '8812'
    AND a.status IN ('3')
    AND A.STGE_LOC = '2103';ip

又根據需求添加索引後10多S結果就出來了。字符串

相關文章
相關標籤/搜索