我有一个包含约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