有沒有優化下面的查詢的方法?它返回正確的記錄,但需要一分多鐘才能執行。在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