關於歷史表使用trunc的問題

2021-09-01 05:00:32 字數 769 閱讀 5603

最近改乙個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...