最近改乙個bug,需要根據時間區間進行查詢,但是反應查詢時間特別長,
select *
from a t, b mbf, c m
where t.firmid = mbf.firmid
and mbf.brokerid = m.brokerid
and trunc(cleardate ) <= to_date('20120312','yyyymmdd')
and trunc(cleardate ) >= to_date('20110101','yyyymmdd')
資料量
select count(*) from a --105824591
select count(*) from b --19993
select count(*) from c --650
select *
from a t, b mbf, c m
where t.firmid = mbf.firmid
and mbf.brokerid = m.brokerid
and cleardate <= to_date('20120312','yyyymmdd')
and cleardate >= to_date('20110101','yyyymmdd'
帶trunc執行時間穩定在12s,不帶trunc執行時間穩定在1-2s
總結:對於歷史表的歸檔,如果不是對時間要求很嚴格,可以將時間設定成年月日的形式,提高查詢效率。
trunc函式的使用
number常見用法 oracle dbms jobs中見到trunc sysdate 1 1 24 瞬間一臉懵。是該學習的時候了。trunc sysdate 1 1 24 是凌晨1點 用法主要有2種,對date使用,對number使用。trunc函式為指定元素而截去的日期值。語法為 trunc d...
關於存在歷史資料的表新增約束的問題
在開發過程中難免會遇見這樣的問題 在使用了一段資料庫後需要在資料庫的某乙個表上增加約束條件 來減少前台的校驗工作,將校驗工作交給資料庫來處理。但是在增加約束時會遇到乙個這樣的問題,就是已經存在的歷史資料不是都滿足這個約束條件的,這樣的話你加約束就會失敗。典型的問題是 你要使某一列為非空,但是在最開始...
oracle函式trunc的使用
oracle函式trunc的使用 1 日期比較時精確到日,可以使用 trunc sysdate,dd 函式。函式支援格式有 yyyy mm dd hh mi 可以用 select trunc sysdate,yyyy from dual 看看結果是什麼。不要按下面的方式比較日期 to date to...