Могу ли я удалить внутреннее соединение и два внешних выбора (как его просто отображение) из запроса ниже - PullRequest
0 голосов
/ 18 марта 2019

У нас есть этот запрос, который ежедневно выполняется на нашей 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 
...