APEX 페이지에 보고서가 있으며 10,000-2,000,000 (1M) 레코드 사이의 결과에서 행 수가 여러 개인 열이 있습니다. 내가 믿는페이지 항목의 부울 값 평가가 올바르지 않습니다.
SELECT
...
FROM ...
WHERE ...
AND (:P2_STARTDATE IS NULL OR TO_DATE(:P2_STARTDATE, 'DD-MON-YYYY HH24:MI:SS') < creation_date)
: 그것은 다음과 같이 보입니다 ...
내가 가진 절 그 곳 조건이있다, 그것은 결정하거나 표시되는 결과를 제한하기 위해 페이지 항목의 값을 사용 언제든지 P2_STARTDATE
페이지 항목의 값을 입력하면 비교가 수행되지만 페이지 항목의 값을 입력하지 않으면 NULL
이되고 부울 연산은 P2_STARTDATE IS NULL
평가에 대해 TRUE를 반환해야합니다. ..
쿼리를 실행하면 실행 시간이 단축됩니다. 0.5M 행에서 검색 할 때 45 초 이상 걸릴 수 있습니다. 이는 허용되지 않습니다. 내 이론을 테스트하기 위해 다음과 같은 변화를 썼다 : 다음 값을 설정하는 경우 NULL로 즉시 평가하고 동일한 결과 집합의 0.5M를 반환 + 1 초에
SELECT
...
FROM ...
WHERE deleted_flag = 'N'
AND (:P2_STARTDATE IS NULL) -- comment the rest of the evaluation....
을 ... 지금, 결과 집합은 비어 명백하게.
그러면 Oracle APEX가 어떻게 표현을 TRUE로 신속하게 평가할 수 있습니까? 제공 할 수있는 모든 팁, 해결 방법 또는 솔루션을 제공해 주셔서 감사합니다.
가 확실 P2_STARTDATE 정말 NULL되어 있는지 확인하기 위해 세션 상태 정보를 확인해 봤어? 디버그 로그는 어때? sqlplus에서 동일한 쿼리를 실행하여 오랜 시간이 걸리는 지 확인해 보셨습니까? – eaolson
Hey @eaolson, 세션을 P2_STARTDATE 값으로 검사 할 때 그냥 비어 있고 상태는 _Updated_ 또는 _Reset to Null _... –
그냥 잠깐 : '부분 페이지 새로 고침'을 설정하여 보고서를 설정 했습니까? = '예'? 그렇다면 '제출할 페이지 항목'에 P2_STARTDATE를 포함 시켰습니까? –