SELECT baprscr.LOAN_ACCOUNTS,
               baprscr.BRANCH_NO,              
               baprsbr.RISK_SORT_NO AS RISK_SORT_NO
   FROM  B_AI_PR_RISK_SORT_CURR_RESULT  baprscr,
               B_AI_PR_RISK_SORT_BASIC_RESULT baprsbr
WHERE  baprscr.LOAN_ACCOUNTS = baprsbr.LOAN_ACCOUNTS
      AND  baprscr.BRANCH_NO = baprsbr.BRANCH_NO
      AND  baprscr.BEGIN_DATE = to_date('20071231','yyyymmdd')
      AND  baprsbr.SORT_END_DATE = (SELECT MAX(baprsbr.SORT_END_DATE) 
                                                                   FROM      B_AI_PR_RISK_SORT_BASIC_RESULT baprsbr
                                                                WHERE baprsbr.LOAN_ACCOUNTS = baprscr.LOAN_ACCOUNTS
                                                                       and  baprsbr.BRANCH_NO = baprscr.BRANCH_NO)

解决方案 »

  1.   

    优化内容:
    FROM     B_AI_PR_RISK_SORT_CURR_RESULT     baprscr, 
                                  B_AI_PR_RISK_SORT_BASIC_RESULT   baprsbr 
    这两张表哪张表数据少,就放在最后WHERE     baprscr.LOAN_ACCOUNTS   =   baprsbr.LOAN_ACCOUNTS 
                AND     baprscr.BRANCH_NO   =   baprsbr.BRANCH_NO 
                AND     baprscr.BEGIN_DATE   =   to_date('20071231','yyyymmdd') 
                AND     baprsbr.SORT_END_DATE   =   (SELECT   MAX(baprsbr.SORT_END_DATE)   
                                                                                                                                          FROM             B_AI_PR_RISK_SORT_BASIC_RESULT   baprsbr 
                                                                                                                                    WHERE   baprsbr.LOAN_ACCOUNTS   =   baprscr.LOAN_ACCOUNTS 
                                                                                                                                                  and     baprsbr.BRANCH_NO   =   baprscr.BRANCH_NO)几个WHERE条件里,出来结果最少的放在最后,比如
    baprscr.LOAN_ACCOUNTS   =   baprsbr.LOAN_ACCOUNTS 
                AND     baprscr.BRANCH_NO   =   baprsbr.BRANCH_NO 
                AND     baprscr.BEGIN_DATE   =   to_date('20071231','yyyymmdd') 
    这几个条件应该会比 AND     baprsbr.SORT_END_DATE   =   (SELECT   MAX(baprsbr.SORT_END_DATE)   
                                                                                                                                          FROM             B_AI_PR_RISK_SORT_BASIC_RESULT   baprsbr 
                                                                                                                                    WHERE   baprsbr.LOAN_ACCOUNTS   =   baprscr.LOAN_ACCOUNTS 
                                                                                                                                                  and     baprsbr.BRANCH_NO   =   baprscr.BRANCH_NO)出来的结果集少,就应该换一下