對於復雜的Where條件組合,Where中含有多個帶索引的字段,考慮用IF語句分情況進行討論;
同時,去掉不必要的外來參數條件,減低復雜度,以便在不同情況下用不同字段上的索引。
繼續“oracle 性能優化操作九”的例子,對於包含
Where (DisposalCourseFlag < v_DisPosalCourseFlag) or (v_DisPosalCourseFlag is null) and ....的查詢,
(這裡v_DisPosalCourseFlag為一個輸入變量,取值范圍可能為[NULL,0,1,2,3,4,5,6,7]),可以考慮分情況用IF語句進行討論。
類似:
IF v_DisPosalCourseFlag =1 THEN Where DisposalCourseFlag = 1 and .... ELSIF v_DisPosalCourseFlag =2 THEN Where DisposalCourseFlag = 2 and ....