我有这个查询往往很慢,经调查似乎是 UNION 子句引起的。我尝试重写 sql 语句,但由于语句不同,我遇到了困难。
有没有办法重写它以进行改进?
SELECT
'A1001' || LPAD(CAST(TNP.AA_ID AS TEXT),28,'0') AS id
,'01' AS I_S_CONTACT_ORDER
,'1' AS I_S_TEL_KBN
,COALESCE(COALESCE(TNP.TEL1,'') || COALESCE(TNP.TEL2,'') || COALESCE(TNP.TEL3,''),' ') AS TEL_JOIN_SEARCH
,COALESCE(TNP.TEL1,'') || COALESCE(TNP.TEL2,'') || COALESCE(TNP.TEL3,'') AS I_S_TEL_NO
,COALESCE(TNP.TEL1,'') || '-' || COALESCE(TNP.TEL2,'') || '-' || COALESCE(TNP.TEL3,'') AS D_S_TEL_NO
FROM
ICS.T_TABLE1 TNP
LEFT JOIN
ICS.TABLE2 S11_MHN
ON
S11_MHN.CODE = 'S11'
AND
TNP.RESULT_STS = S11_MHN.DISPLAY_CODE
WHERE
1=1
AND
TNP.T_TEL_JOIN = '99999999999'
UNION
SELECT
'A2001' || LPAD(CAST(TNP.AA_ID AS TEXT),28,'0') AS id
,'02' AS I_S_TEL_REGISTER_KBN
,'2' AS I_S_TEL_KBN
,TNP.T_MOBILE_JOIN AS TEL_JOIN_SEARCH
,COALESCE(TNP.T_MOBILE1,'') || COALESCE(TNP.T_MOBILE2,'') || COALESCE(TNP.T_MOBILE3,'') AS I_S_TEL_NO
,COALESCE(TNP.T_MOBILE1,'') || '-' || COALESCE(TNP.T_MOBILE2,'') || '-' || COALESCE(TNP.T_MOBILE3,'') AS D_S_TEL_NO
FROM
ICS.T_TABLE1 TNP
LEFT JOIN
ICS.TABLE2 S11_MHN
ON
S11_MHN.CODE = 'S11'
AND
TNP.RESULT_STS = S11_MHN.DISPLAY_CODE
WHERE
1=1
AND
TNP.T_MOBILE_JOIN = '99999999999'