我在APEX頁面中有一個報告,它有多個列,結果(行數)從10,000到1,000,000(1M)記錄之間的任何位置。頁面項目的布爾值評估不正確
有一個有條件的where子句我有,而且爲了使用一個頁面元素的值,以確定或限制所顯示的結果......它看起來是這樣的:
SELECT
...
FROM ...
WHERE ...
AND (:P2_STARTDATE IS NULL OR TO_DATE(:P2_STARTDATE, 'DD-MON-YYYY HH24:MI:SS') < creation_date)
我相信這在任何時候我做了P2_STARTDATE
頁面項目輸入一個值,則比較發生,但是當我不爲,則頁面項目進入任一值,應該是NULL
和布爾操作應該只返回TRUE爲P2_STARTDATE IS NULL
評價。 ..
查詢使執行時間佔用在0.5M行中搜索時多達45+秒,這是不可接受的。我寫了下面的變化來測試我的理論:
SELECT
...
FROM ...
WHERE deleted_flag = 'N'
AND (:P2_STARTDATE IS NULL) -- comment the rest of the evaluation....
它立即計算結果爲NULL,並返回結果集相同0.5M +在1秒左右......現在,我要是設置的值,則結果集是空的,明顯。
所以問題是,我如何才能使Oracle APEX快速評估爲TRUE表達式?感謝您提供的任何提示,解決方法或解決方案。
你檢查會話狀態信息,以確保P2_STARTDATE還真是空?調試日誌怎麼樣?你有沒有嘗試從sqlplus運行相同的查詢,看看它是否也需要很長時間? – eaolson
嘿@eaolson,爲P2_STARTDATE值檢查會話時,它僅僅是空的,它的狀態是_Updated_或_RESET爲Null _... –
只是一種預感:你設置了'啓用部分頁面Refresh'報告='是'?如果是這樣,你有沒有在「提交的頁面項目」中包含P2_STARTDATE? –