有没有优化下面的查询的方法?它返回正确的记录,但需要一分多钟才能执行。在Oracle中用NULLable列优化查询
select STATUS, SUBNO, TRUNC(TRSF_DATE) TRSF_DATE
from
(
select STATUS, SUBNO, TRUNC(TRSF_DATE) TRSF_DATE
from tbl where
trsf_date is not null and
contrno in ('8', '8A', '8B', '8C', '8D', '8E', '8PH3A', '8PH3B', '8PH3C', '8PHD')
)
where trsf_date = to_date('5/21/2011', 'mm/dd/yyyy')**
的要求是,返回记录,其中:
- contrno在( '8', '8A', '8B', '8C', '8D', '8E','8PH3A ”, '8PH3B', '8PH3C', '8PHD')
- trsf_date =一些具体日期
注意的trsf_date列可以为空,我不得不使用trsf_date在WHERE子句中。这就是为什么我使用内部查询首先获取NOT NULL行,然后从中选择行。否则查询将会卡住而不返回任何行。
你正在使用哪个数据库? – Akhil 2011-06-07 07:03:25
看起来像甲骨文。 – ErikE 2011-06-07 08:31:34
我看不到明显的错误(我确定查询优化器会合并条件)。向我们显示执行计划 – 2011-06-07 08:47:22