我有一個包含約49403459
記錄的表。如何優化在日期的where子句中具有to_char的Oracle查詢
我想查詢日期範圍內的表格。說04/10/2010
到04/10/2010
。但是,日期以格式10-APR-10 10.15.06.000000 AM
(時間戳)存儲在表中。
,當我做
SELECT bunch,of,stuff,create_date
FROM myTable
WHERE TO_CHAR (create_date,'MM/DD/YYYY)' >= '04/10/2010'
AND TO_CHAR (create_date, 'MM/DD/YYYY' <= '04/10/2010'
我得到529
行,但在255.59
秒的成績!這是因爲我想我正在做每個記錄上的TO_CHAR。
然而,當我做
SELECT bunch,of,stuff,create_date
FROM myTable
WHERE create_date >= to_date('04/10/2010','MM/DD/YYYY')
AND create_date <= to_date('04/10/2010','MM/DD/YYYY')
然後我得到0
結果0.14
秒。
如何快速查詢此查詢並仍然有效(529
)結果?
在這一點上我不能改變索引。現在我認爲索引創建在create_date
列。
如何將兩個日期範圍轉換爲第一個日期範圍轉換爲全部爲0的時間戳,並將第二個日期範圍轉換爲日期的最後時間戳時間戳。如果這是有道理的...?
where子句取沒有結果以下兩種:
WHERE
create_date >= to_timestamp('04/10/2010 00:00:00.000000','MM/DD/YYYY HH24:MI:SS.FF')
AND
create_date <= to_timestamp('04/10/2010 00:00:00.000000','MM/DD/YYYY HH24:MI:SS.FF')
謝謝。我嘗試過,但仍然沒有得到任何結果。請參閱我的編輯 – Josh 2010-04-10 18:41:50
我編輯了我的答案。我認爲你的第二個查詢可能是正確的。第一個查詢給你不正確的結果。 – newdayrising 2010-04-10 18:43:44
不......我可以查詢表格並查看是否有今天創建的記錄。 .. – Josh 2010-04-10 18:46:19