各位大牛帮忙看下,怎么优化 ,FUNC_PRODUCT_MATCH_2
FUNC_PRODUCT_MATCH_3
FUNC_PRODUCT_MATCH_4
FUNC_PRODUCT_MATCH_5 是自定义的函数,两个查询表都是全表扫描 ,
INSERT /* +APPEND*/ INTO DM_PRODUCT_MATCH_RECO NOLOGGING
SELECT
ACCT_MONTH,
AREA_NO,
CITY_NO,
USER_NO,
DEVICE_NUMBER,
USER_DINNER,
USER_TYPE,
USER_DINNER_RECO,
USER_DINNER_DESC,
RENT,
TOTAL_FEE,
MATCH_VALUE_BEFORE,
MATCH_VALUE_CALL,
MATCH_VALUE_FLUX,
MATCH_VALUE_CALLED,
FUNC_PRODUCT_MATCH_5(MATCH_VALUE_CALL,MATCH_VALUE_FLUX,MATCH_VALUE_CALLED) MATCH_VALUE,
CALL_SPILL,
FLUX_SPILL,
CALLED_SPILL
FROM(
SELECT
A.ACCT_MONTH,
A.AREA_NO,
A.CITY_NO,
A.USER_NO,
A.DEVICE_NUMBER,
A.USER_DINNER,
A.USER_TYPE,
B.USER_DINNER USER_DINNER_RECO,
B.USER_DINNER_DESC,
B.RENT,
A.MATCH_VALUE_BEFORE,
A.TOTAL_FEE,
FUNC_PRODUCT_MATCH_2(A.CALL_LOC,A.CALL_LOC_LONG,A.CALL_PRO,A.CALL_COU,
B.CALL_LOC,B.CALL_LOC_LONG,B.CALL_PRO,B.CALL_COU) MATCH_VALUE_CALL,
FUNC_PRODUCT_MATCH_2(0,A.FLUX_LOC,A.FLUX_PRO,A.FLUX_COU,
0,B.FLUX_LOC,B.FLUX_PRO,B.FLUX_COU) MATCH_VALUE_FLUX,
FUNC_PRODUCT_MATCH_3(A.CALLED_LOC,A.CALLED_PRO,A.CALLED_COU,
B.CALLED_LOC,B.CALLED_PRO,B.CALLED_COU,
B.CALLED_LOC_PRI,B.CALLED_PRO_PRI,B.CALLED_COU_PRI) MATCH_VALUE_CALLED,
FUNC_PRODUCT_MATCH_4(A.CALL_LOC,A.CALL_LOC_LONG,A.CALL_PRO,A.CALL_COU,
B.CALL_LOC,B.CALL_LOC_LONG,B.CALL_PRO,B.CALL_COU) CALL_SPILL,
FUNC_PRODUCT_MATCH_4(0,A.FLUX_LOC,A.FLUX_PRO,A.FLUX_COU,
0,B.FLUX_LOC,B.FLUX_PRO,B.FLUX_COU) FLUX_SPILL,
FUNC_PRODUCT_MATCH_4(0,A.CALLED_LOC,A.CALLED_PRO,A.CALLED_COU,
0,B.CALLED_LOC,B.CALLED_PRO,B.CALLED_COU) CALLED_SPILL
FROM MID_PRODUCT_MATCH_USER_RECO A,
MID_PRODUCT_DINNER_RECO_1 B
WHERE A.USER_TYPE=B.USER_TYPE
) T;