为性能重写 Union Sql

问题描述 投票:0回答:0

我有这个查询往往很慢,经调查似乎是 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'
sql postgresql
© www.soinside.com 2019 - 2024. All rights reserved.