У нас есть этот запрос, который ежедневно выполняется на нашей hivedb.
У нас есть внутреннее соединение, UNION-ALL с левым внешним соединением UNION ALL с правым внешним соединением в этом запросе.
Могу ли я удалить внутреннее соединение и два внешних оператора выбора, так как LO unionall RO должно быть достаточно? этот запрос, безусловно, выглядит неэффективным, учитывая общие условия соединения и предложение , где для соединений LO и RO *
Запрос здесь:
SELECT tab1.a0 as a0, tab1.a1 as a1, tab1.a2 as a2, tab1.a3 as a3, tab1.a4 as a4, tab1.a5 as a5, tab1.a6 as a6, tab1.a7 as a7, tab1.a8 as a8, tab1.a9 as a9, tab1.a10 as a10, tab1.a11 as a11
FROM
(
SELECT tab1.a0 as a0, tab1.a1 as a1, tab1.a2 as a2, tab1.a3 as a3, tab1.a4 as a4, tab1.a5 as a5, tab1.a6 as a6, tab1.a7 as a7, tab1.a8 as a8, tab1.a9 as a9, tab1.a10 as a10, tab1.a11 as a11
FROM
(
SELECT tab1.col0 as a0, tab1.col1 as a1, tab1.col2 as a2, tab1.col3 as a3, tab1.col4 as a4, tab1.col5 as a5, tab1.col8 as a6, tab11.col1 as a7, infaHiveSysTimestamp('SS') as a8, CAST(NULL AS TIMESTAMP) as a9, tab1.col6 as a10, infaNativeUDFCallBigInt('TO_BIGINT', TRIM(tab1.col7), 'InfaNativeCall_ConstValue_FALSE' as a11
FROM
w6070832240397008597_exp_data_stg_core tab1
JOIN
w6070832240397008597_w6070832240397008597_data_stg_core tab11
ON ((tab11.col0 = tab1.col0) AND (tab11.col6 = tab1.col1) AND (tab11.col5 = tab1.col5))
UNION ALL
SELECT tab1.col0 as a0, tab1.col1 as a1, tab1.col2 as a2, tab1.col3 as a3, tab1.col4 as a4, tab1.col5 as a5, tab1.col8 as a6, infaHiveSysTimestamp('SS') as a7, infaHiveSysTimestamp('SS') as a8, CAST(NULL AS TIMESTAMP) as a9, tab1.col6 as a10, infaNativeUDFCallBigInt('TO_BIGINT', TRIM(tab1.col7), 'InfaNativeCall_ConstValue_FALSE') as a11
FROM w6070832240397008597_exp_data_stg_core tab1
LEFT OUTER JOIN
w6070832240397008597_w6070832240397008597_data_stg_core tab11
ON ((tab11.col0 = tab1.col0) AND (tab11.col6 = tab1.col1) AND (tab1.col5 = tab11.col5))
WHERE 1 = (CASE WHEN tab11.col0 IS NULL THEN 1 ELSE 0 END)
UNION ALL
SELECT tab1.col0 as a0, tab1.col6 as a1, tab1.col7 as a2, tab1.col8 as a3, tab1.col9 as a4, tab1.col5 as a5, tab1.col10 as a6, tab1.col1 as a7, tab1.col2 as a8, tab1.col3 as a9, tab1.col4 as a10, tab1.col11 as a11 FROM
w6070832240397008597_exp_data_stg_core tab11
RIGHT OUTER JOIN w6070832240397008597_w6070832240397008597_data_stg_core tab1
ON ((tab1.col0 = tab11.col0) AND (tab1.col6 = tab11.col1) AND (tab1.col5 = tab11.col5))
WHERE 1 = (CASE WHEN tab11.col0 IS NULL THEN 1 ELSE 0 END)
) tab1
)
single_use_subq39