經常要在數據中檢索近一個月來發生的數據,所以采用如下語句select * from eventtable where eventdate>sysdate-30,當數據量小的時候還看不出來,數據量大一些就會發現上面的語句很慢,但eventdate(日期型字段)上也是有索引的,可為什麼會慢呢? 原來是Oracle在進行查找的時候不斷地去取sysdate這個不斷變化的值,而不是我們想象中的一次產生一個條件語句然後進行查找。為了加快速度,我們可以先把當天的日期取出來,然後轉成字符串後再用如下語句查,select * from eventtable where eventdate > to_date('2001-12-1','yyyy-mm-dd')。速度竟然差了幾十倍。