regxp_replace和listagg影响查询的性能

时间:2017-06-13 15:58:37

标签: sql oracle performance listagg

我想提高查询的性能。由于使用了listagg和regxp_like,查询性能可能会降低。是否还有其他更好的选择来取代这两个可能改善性能的功能。

  1. 我不允许在表格中引入任何索引 使用。(为所有表添加了更多索引......不能 添加更多)
  2. 需要调整查询方法以提高其性能
  3. 查询:第2版(效果64.796)

        WITH SUAS_INFO AS
    --Get SUAS service details
    (SELECT S.NAME SUAS_SERVICE,
           S.SERVICEID SUAS_SERVICE_ID,
           SUB.NAME SUBSCRIBER_NAME,
           SMAUC.SERVICEID SMAUC_SERVICE_ID,
           SMAUC.NAME SMAUC_SERVICE,
           regexp_replace(LISTAGG(SIPVPN_MAIN.NAME, ',') WITHIN
                          GROUP(ORDER BY SIPVPN_MAIN.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SIPVPN_MAIN_SERVICE,
           regexp_replace(LISTAGG(SIPVPN_RED.NAME, ',') WITHIN
                          GROUP(ORDER BY SIPVPN_RED.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SIPVPN_RED_SERVICE,
           regexp_replace(LISTAGG(SIPSBV.NAME, ',') WITHIN
                          GROUP(ORDER BY SIPSBV.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SIPSBV_MAIN,
           regexp_replace(LISTAGG(SIPSBV_RED.NAME, ',') WITHIN
                          GROUP(ORDER BY SIPSBV_RED.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SIPSBV_RED,
           regexp_replace(LISTAGG(PORT_NO.NAME, ',') WITHIN
                          GROUP(ORDER BY PORT_NO.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SBC_PORT_NO
      FROM SERVICE S
      JOIN SUBSCRIBER SUB ON SUB.SUBSCRIBERID = S.SERVICE2SUBSCRIBER
                         AND S.SERVICE2SERVICETYPE = 1955100016
    --Fetching SMAUC service
      LEFT OUTER JOIN SERVICEOBJECT SO1 ON SO1.SERVICEOBJECT2SERVICE = S.SERVICEID
                                       AND SO1.SERVICEOBJECT2RELATION = 1955100029
      LEFT OUTER JOIN SERVICE SMAUC ON SMAUC.SERVICEID = SO1.SERVICEOBJECT2OBJECT
    
    --Fetching SIPVPN MAIN service
      LEFT OUTER JOIN SERVICEOBJECT SO2 ON SO2.SERVICEOBJECT2SERVICE = S.SERVICEID
                                       AND SO2.SERVICEOBJECT2RELATION = 1955100023
      LEFT OUTER JOIN SERVICE SIPVPN_MAIN ON SIPVPN_MAIN.SERVICEID = SO2.SERVICEOBJECT2OBJECT
    
    --Fetching SIPVPN Redundant service
      LEFT OUTER JOIN SERVICEOBJECT SO3 ON SO3.SERVICEOBJECT2SERVICE = S.SERVICEID
                                       AND SO3.SERVICEOBJECT2RELATION = 1955100042
      LEFT OUTER JOIN SERVICE SIPVPN_RED ON SIPVPN_RED.SERVICEID = SO3.SERVICEOBJECT2OBJECT
    
    --Fetching SBV SIP Trunk IMS service
      LEFT OUTER JOIN SERVICEOBJECT SO4 ON SO4.SERVICEOBJECT2SERVICE = S.SERVICEID
                                       AND SO4.SERVICEOBJECT2RELATION = 1955100030
      LEFT OUTER JOIN SERVICE SIPSBV ON SIPSBV.SERVICEID = SO4.SERVICEOBJECT2OBJECT
    
    --Fetching Redundant SBV SIP Trunk IMS service
      LEFT OUTER JOIN SERVICEOBJECT SO5 ON SO5.SERVICEOBJECT2SERVICE = S.SERVICEID
                                       AND SO5.SERVICEOBJECT2RELATION = 1955100031
      LEFT OUTER JOIN SERVICE SIPSBV_RED ON SIPSBV_RED.SERVICEID = SO5.SERVICEOBJECT2OBJECT
    -- Fetching SBC Port details
      LEFT OUTER JOIN SERVICEOBJECT SO6 ON SO6.SERVICEOBJECT2SERVICE = SIPSBV.SERVICEID
                                       AND SO6.SERVICEOBJECT2RELATION = 3100000065
                                       AND SO6.SERVICEOBJECT2DIMOBJECT = 3
    
      LEFT OUTER JOIN CIRCUIT CKT ON CKT.CIRCUITID = SO6.SERVICEOBJECT2OBJECT
    
      LEFT OUTER JOIN NODE PBX ON PBX.NODE2NODEDEF = 3100000000
                              AND PBX.NODEID IN
                                  (CKT.CIRCUIT2STARTNODE, CKT.CIRCUIT2ENDNODE)
      LEFT OUTER JOIN PORT P ON P.PORTID =
                                DECODE(PBX.NODEID,
                                       CKT.CIRCUIT2STARTNODE,
                                       CKT.CIRCUIT2STARTPORT,
                                       CKT.CIRCUIT2ENDPORT)
      LEFT OUTER JOIN NUMBEROBJECT NOB ON NOB.NUMBEROBJECT2OBJECT = P.PORTID
                                      AND NOB.NUMBEROBJECT2RELATION = 3100000031
      LEFT OUTER JOIN DIMNUMBER PORT_NO ON PORT_NO.DIMNUMBERID = NOB.NUMBEROBJECT2NUMBER
    
     GROUP BY S.NAME, S.SERVICEID, SUB.NAME, SMAUC.SERVICEID, SMAUC.NAME
    
    ),
    
    SMAUC_REL AS
    (SELECT SMAUC1.SERVICEID SMAUC_SERVICEID,
           regexp_replace(LISTAGG(SID_MAIN.NAME, ',') WITHIN
                          GROUP(ORDER BY SID_MAIN.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SID_MAIN_NAME,
           regexp_replace(LISTAGG(SID_RED.NAME, ',') WITHIN
                          GROUP(ORDER BY SID_RED.NAME),
                          '([^,]+)(,\1)*(,|$)',
                          '\1\3') SID_RED_NAME,
           SEC_SUBNET.NAME SEC_SUBNET,
           GLBL_DMZ_SUBNET.NAME GLBL_DMZ_SUBNET,
           GLBL_DMZ_IP.NAME GLBL_DMZ_ZONE_IP,
           CUST_DMZ_SUBNET.NAME CUST_DMZ_SUBNET,
           CUST_PUB_IP.NAME CUST_PUB_IP_EDGE,
           CUST_PUB_SBC.NAME CUST_PUB_SBC_B2B_IP,
           PUB_REV_PRX.NAME PUBLIC_REVRS_PRXY_MOB_IP,
           CUST_ACC_SUB.NAME CUST_ACC_SUBNET,
           EXT_SMAUC.REVERSEPROXYURL CUST_REVERSEPROXYURL,
           CUST_ACS_VLAN.VALUETO CUST_ACCZONE_VLAN,
           SEC_ZONE_VLAN.VALUETO SEC_ZONE_VLAN,
           GLBL_DMZ_VLAN.VALUETO GLBL_DMZ_VLAN,
           CUST_DMZ_VLAN.VALUETO CUST_DMZ_VLAN,
           MAIN_SBC.NAME MAIN_SBC_DEVICE
      FROM SERVICE SMAUC1
    --Fetching SID Main service
      LEFT OUTER JOIN SERVICEOBJECT SO6 ON SO6.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                       AND SO6.SERVICEOBJECT2RELATION = 1955100039
      LEFT OUTER JOIN SERVICE SID_MAIN ON SID_MAIN.SERVICEID = SO6.SERVICEOBJECT2OBJECT
    
    --Fetching SID Redundant service
      LEFT OUTER JOIN SERVICEOBJECT SO7 ON SO7.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                       AND SO7.SERVICEOBJECT2RELATION = 1955100038
      LEFT OUTER JOIN SERVICE SID_RED ON SID_RED.SERVICEID = SO7.SERVICEOBJECT2OBJECT
    
    --Fetching Secure Zone Subnet Number
      LEFT OUTER JOIN SERVICEOBJECT SO8 ON SO8.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                       AND SO8.SERVICEOBJECT2RELATION = 1955100041
      LEFT OUTER JOIN DIMNUMBER SEC_SUBNET ON SEC_SUBNET.DIMNUMBERID = SO8.SERVICEOBJECT2OBJECT
    
    --Fetching Global DMZ Zone Subnet Number
      LEFT OUTER JOIN SERVICEOBJECT SO9 ON SO9.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                       AND SO9.SERVICEOBJECT2RELATION = 1955100036
      LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_SUBNET ON GLBL_DMZ_SUBNET.DIMNUMBERID = SO9.SERVICEOBJECT2OBJECT
    
    --Fetching Customer DMZ Subnet Number
      LEFT OUTER JOIN SERVICEOBJECT SO10 ON SO10.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO10.SERVICEOBJECT2RELATION = 1955100028
      LEFT OUTER JOIN DIMNUMBER CUST_DMZ_SUBNET ON CUST_DMZ_SUBNET.DIMNUMBERID = SO10.SERVICEOBJECT2OBJECT
    
    --Fetching Global DMZ Zone IP Number
      LEFT OUTER JOIN SERVICEOBJECT SO_11 ON SO_11.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                         AND SO_11.SERVICEOBJECT2RELATION = 1955100043
      LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_IP ON GLBL_DMZ_IP.DIMNUMBERID = SO_11.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Public Edge IP Number
      LEFT OUTER JOIN SERVICEOBJECT SO11 ON SO11.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO11.SERVICEOBJECT2RELATION = 1955100024
      LEFT OUTER JOIN DIMNUMBER CUST_PUB_IP ON CUST_PUB_IP.DIMNUMBERID = SO11.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Public SBC B2B IP Number
      LEFT OUTER JOIN SERVICEOBJECT SO12 ON SO12.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO12.SERVICEOBJECT2RELATION = 1955100026
      LEFT OUTER JOIN DIMNUMBER CUST_PUB_SBC ON CUST_PUB_SBC.DIMNUMBERID = SO12.SERVICEOBJECT2OBJECT
    
    --Fetching Public Reverse Proxy Mobile Access IP Number
      LEFT OUTER JOIN SERVICEOBJECT SO13 ON SO13.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO13.SERVICEOBJECT2RELATION = 1955100033
      LEFT OUTER JOIN DIMNUMBER PUB_REV_PRX ON PUB_REV_PRX.DIMNUMBERID = SO13.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Access Subnet Number
      LEFT OUTER JOIN SERVICEOBJECT SO14 ON SO14.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO14.SERVICEOBJECT2RELATION = 1955100035
      LEFT OUTER JOIN DIMNUMBER CUST_ACC_SUB ON CUST_ACC_SUB.DIMNUMBERID = SO14.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Access Zone VLAN
      LEFT OUTER JOIN SERVICEOBJECT SO15 ON SO15.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO15.SERVICEOBJECT2RELATION = 1955100034
      LEFT OUTER JOIN DIMNUMBER CUST_ACS_VLAN ON CUST_ACS_VLAN.DIMNUMBERID = SO15.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Secured Zone VLAN
      LEFT OUTER JOIN SERVICEOBJECT SO16 ON SO16.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO16.SERVICEOBJECT2RELATION = 1955100040
      LEFT OUTER JOIN DIMNUMBER SEC_ZONE_VLAN ON SEC_ZONE_VLAN.DIMNUMBERID = SO16.SERVICEOBJECT2OBJECT
    
    --Fetching Global DMZ VLAN
      LEFT OUTER JOIN SERVICEOBJECT SO17 ON SO17.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO17.SERVICEOBJECT2RELATION = 1955100032
      LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_VLAN ON GLBL_DMZ_VLAN.DIMNUMBERID = SO17.SERVICEOBJECT2OBJECT
    
    --Fetching Customer DMZ VLAN
      LEFT OUTER JOIN SERVICEOBJECT SO18 ON SO18.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO18.SERVICEOBJECT2RELATION = 1955100027
      LEFT OUTER JOIN DIMNUMBER CUST_DMZ_VLAN ON CUST_DMZ_VLAN.DIMNUMBERID = SO18.SERVICEOBJECT2OBJECT
    
    --Fetching Main SBC Node
      LEFT OUTER JOIN SERVICEOBJECT SO19 ON SO19.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                                        AND SO19.SERVICEOBJECT2RELATION = 1955100044
      LEFT OUTER JOIN NODE MAIN_SBC ON MAIN_SBC.NODEID = SO19.SERVICEOBJECT2OBJECT
    
    --Fetching REVERSEPROXYURL for SMAUC port
      LEFT OUTER JOIN SERVICE_EXT_SMAUC EXT_SMAUC ON EXT_SMAUC.SERVICEID = SMAUC1.SERVICEID
     GROUP BY SMAUC1.SERVICEID,
              SEC_SUBNET.NAME,
              GLBL_DMZ_SUBNET.NAME,
              GLBL_DMZ_IP.NAME,
              CUST_DMZ_SUBNET.NAME,
              CUST_PUB_IP.NAME,
              CUST_PUB_SBC.NAME,
              PUB_REV_PRX.NAME,
              CUST_ACC_SUB.NAME,
              EXT_SMAUC.REVERSEPROXYURL,
              CUST_ACS_VLAN.VALUETO,
              SEC_ZONE_VLAN.VALUETO,
              GLBL_DMZ_VLAN.VALUETO,
              CUST_DMZ_VLAN.VALUETO,
              MAIN_SBC.NAME             
    )
    SELECT SUAS_INFO.SUAS_SERVICE,
           SUAS_INFO.SUBSCRIBER_NAME,
           SUAS_INFO.SMAUC_SERVICE,
           SUAS_INFO.SIPVPN_MAIN_SERVICE,
           SUAS_INFO.SIPVPN_RED_SERVICE,
           SMAUC_REL.SID_MAIN_NAME,
           SMAUC_REL.SID_RED_NAME,
           SUAS_INFO.SIPSBV_MAIN,
           SUAS_INFO.SIPSBV_RED,
           SMAUC_REL.CUST_ACCZONE_VLAN,
           SMAUC_REL.CUST_ACC_SUBNET,
           SMAUC_REL.SEC_ZONE_VLAN,
           SMAUC_REL.SEC_SUBNET,
           SMAUC_REL.GLBL_DMZ_VLAN,
           SMAUC_REL.GLBL_DMZ_SUBNET,
           SMAUC_REL.GLBL_DMZ_ZONE_IP GLBL_DMZ_ZONE_IP,
           SMAUC_REL.CUST_DMZ_VLAN,
           SMAUC_REL.CUST_DMZ_SUBNET,
           SMAUC_REL.CUST_PUB_IP_EDGE,
           SMAUC_REL.CUST_PUB_SBC_B2B_IP,
           SMAUC_REL.PUBLIC_REVRS_PRXY_MOB_IP,
           SMAUC_REL.CUST_REVERSEPROXYURL,
           SUAS_INFO.SBC_PORT_NO,
           SMAUC_REL.MAIN_SBC_DEVICE
      FROM SUAS_INFO
      LEFT OUTER JOIN SMAUC_REL ON SMAUC_REL.SMAUC_SERVICEID = SUAS_INFO.SMAUC_SERVICE_ID
     ORDER BY SUAS_INFO.SUAS_SERVICE
    

    查询:版本1(效果10.327)

    WITH SUAS_INFO AS
    --Get SUAS service details
    (SELECT S.NAME SUAS_SERVICE,S.SERVICEID SUAS_SERVICE_ID,SUB.NAME SUBSCRIBER_NAME,SMAUC.SERVICEID SMAUC_SERVICE_ID,SMAUC.NAME SMAUC_SERVICE,SIPVPN_MAIN.NAME SIPVPN_MAIN_SERVICE,SIPVPN_RED.NAME SIPVPN_RED_SERVICE,SIPSBV.NAME SIPSBV_MAIN,SIPSBV_RED.NAME SIPSBV_RED
    FROM SERVICE S 
    JOIN SUBSCRIBER SUB
    ON SUB.SUBSCRIBERID=S.SERVICE2SUBSCRIBER
    AND S.SERVICE2SERVICETYPE=1955100016
    --Fetching SMAUC service
    LEFT OUTER JOIN SERVICEOBJECT SO1 ON SO1.SERVICEOBJECT2SERVICE=S.SERVICEID
    AND SO1.SERVICEOBJECT2RELATION=1955100029
    LEFT OUTER JOIN SERVICE SMAUC ON SMAUC.SERVICEID=SO1.SERVICEOBJECT2OBJECT
    
    --Fetching SIPVPN MAIN service
    LEFT OUTER JOIN SERVICEOBJECT SO2 ON SO2.SERVICEOBJECT2SERVICE=S.SERVICEID
    AND SO2.SERVICEOBJECT2RELATION=1955100023
    LEFT OUTER JOIN SERVICE SIPVPN_MAIN ON SIPVPN_MAIN.SERVICEID=SO2.SERVICEOBJECT2OBJECT
    
    
    --Fetching SIPVPN Redundant service
    LEFT OUTER JOIN SERVICEOBJECT SO3 ON SO3.SERVICEOBJECT2SERVICE=S.SERVICEID
    AND SO3.SERVICEOBJECT2RELATION=1955100042
    LEFT OUTER JOIN SERVICE SIPVPN_RED ON SIPVPN_RED.SERVICEID=SO3.SERVICEOBJECT2OBJECT
    
    
    --Fetching SBV SIP Trunk IMS service
    LEFT OUTER JOIN SERVICEOBJECT SO4 ON SO4.SERVICEOBJECT2SERVICE=S.SERVICEID
    AND SO4.SERVICEOBJECT2RELATION=1955100030
    LEFT OUTER JOIN SERVICE SIPSBV ON SIPSBV.SERVICEID=SO4.SERVICEOBJECT2OBJECT
    
    
    
    --Fetching Redundant SBV SIP Trunk IMS service
    LEFT OUTER JOIN SERVICEOBJECT SO5 ON SO5.SERVICEOBJECT2SERVICE=S.SERVICEID
    AND SO5.SERVICEOBJECT2RELATION=1955100031
    LEFT OUTER JOIN SERVICE SIPSBV_RED ON SIPSBV_RED.SERVICEID=SO5.SERVICEOBJECT2OBJECT
    
    
    ),
    
    SMAUC_REL AS
    (SELECT SMAUC1.SERVICEID SMAUC_SERVICEID,SID_MAIN.NAME SID_MAIN_NAME,SID_RED.NAME SID_RED_NAME,SEC_SUBNET.NAME SEC_SUBNET,GLBL_DMZ_SUBNET.NAME GLBL_DMZ_SUBNET,GLBL_DMZ_IP.NAME GLBL_DMZ_ZONE_IP,
    CUST_DMZ_SUBNET.NAME CUST_DMZ_SUBNET,CUST_PUB_IP.NAME CUST_PUB_IP_EDGE,CUST_PUB_SBC.NAME CUST_PUB_SBC_B2B_IP,PUB_REV_PRX.NAME PUBLIC_REVRS_PRXY_MOB_IP,CUST_ACC_SUB.NAME CUST_ACC_SUBNET,EXT_SMAUC.REVERSEPROXYURL CUST_REVERSEPROXYURL,
    CUST_ACS_VLAN.VALUETO CUST_ACCZONE_VLAN,SEC_ZONE_VLAN.VALUETO SEC_ZONE_VLAN,GLBL_DMZ_VLAN.VALUETO GLBL_DMZ_VLAN,CUST_DMZ_VLAN.VALUETO CUST_DMZ_VLAN
    FROM SERVICE SMAUC1
    --Fetching SID Main service
    LEFT OUTER JOIN SERVICEOBJECT SO6 ON SO6.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO6.SERVICEOBJECT2RELATION=1955100039
    LEFT OUTER JOIN SERVICE SID_MAIN ON SID_MAIN.SERVICEID=SO6.SERVICEOBJECT2OBJECT
    
    
    --Fetching SID Redundant service
    LEFT OUTER JOIN SERVICEOBJECT SO7 ON SO7.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO7.SERVICEOBJECT2RELATION=1955100038
    LEFT OUTER JOIN SERVICE SID_RED ON SID_RED.SERVICEID=SO7.SERVICEOBJECT2OBJECT
    
    
    --Fetching Secure Zone Subnet Number
    LEFT OUTER JOIN SERVICEOBJECT SO8 ON SO8.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO8.SERVICEOBJECT2RELATION=1955100041
    LEFT OUTER JOIN DIMNUMBER SEC_SUBNET ON SEC_SUBNET.DIMNUMBERID=SO8.SERVICEOBJECT2OBJECT
    
    
    --Fetching Global DMZ Zone Subnet Number
    LEFT OUTER JOIN SERVICEOBJECT SO9 ON SO9.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO9.SERVICEOBJECT2RELATION=1955100036
    LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_SUBNET ON GLBL_DMZ_SUBNET.DIMNUMBERID=SO9.SERVICEOBJECT2OBJECT
    
    
    --Fetching Customer DMZ Subnet Number
    LEFT OUTER JOIN SERVICEOBJECT SO10 ON SO10.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO10.SERVICEOBJECT2RELATION=1955100028
    LEFT OUTER JOIN DIMNUMBER CUST_DMZ_SUBNET ON CUST_DMZ_SUBNET.DIMNUMBERID=SO10.SERVICEOBJECT2OBJECT
    
    --Fetching Global DMZ Zone IP Number
    LEFT OUTER JOIN SERVICEOBJECT SO_11 ON SO_11.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO_11.SERVICEOBJECT2RELATION=1955100043
    LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_IP ON GLBL_DMZ_IP.DIMNUMBERID=SO_11.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Public Edge IP Number
    LEFT OUTER JOIN SERVICEOBJECT SO11 ON SO11.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO11.SERVICEOBJECT2RELATION=1955100024
    LEFT OUTER JOIN DIMNUMBER CUST_PUB_IP ON CUST_PUB_IP.DIMNUMBERID=SO11.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Public SBC B2B IP Number
    LEFT OUTER JOIN SERVICEOBJECT SO12 ON SO12.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO12.SERVICEOBJECT2RELATION=1955100026
    LEFT OUTER JOIN DIMNUMBER CUST_PUB_SBC ON CUST_PUB_SBC.DIMNUMBERID=SO12.SERVICEOBJECT2OBJECT
    
    --Fetching Public Reverse Proxy Mobile Access IP Number
    LEFT OUTER JOIN SERVICEOBJECT SO13 ON SO13.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO13.SERVICEOBJECT2RELATION=1955100033
    LEFT OUTER JOIN DIMNUMBER PUB_REV_PRX ON PUB_REV_PRX.DIMNUMBERID=SO13.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Access Subnet Number
    LEFT OUTER JOIN SERVICEOBJECT SO14 ON SO14.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO14.SERVICEOBJECT2RELATION=1955100035
    LEFT OUTER JOIN DIMNUMBER CUST_ACC_SUB ON CUST_ACC_SUB.DIMNUMBERID=SO14.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Access Zone VLAN
    LEFT OUTER JOIN SERVICEOBJECT SO15 ON SO15.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO15.SERVICEOBJECT2RELATION=1955100034
    LEFT OUTER JOIN DIMNUMBER CUST_ACS_VLAN ON CUST_ACS_VLAN.DIMNUMBERID=SO15.SERVICEOBJECT2OBJECT
    
    --Fetching Customer Secured Zone VLAN
    LEFT OUTER JOIN SERVICEOBJECT SO16 ON SO16.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO16.SERVICEOBJECT2RELATION=1955100040
    LEFT OUTER JOIN DIMNUMBER SEC_ZONE_VLAN ON SEC_ZONE_VLAN.DIMNUMBERID=SO16.SERVICEOBJECT2OBJECT
    
    --Fetching Global DMZ VLAN
    LEFT OUTER JOIN SERVICEOBJECT SO17 ON SO17.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO17.SERVICEOBJECT2RELATION=1955100032
    LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_VLAN ON GLBL_DMZ_VLAN.DIMNUMBERID=SO17.SERVICEOBJECT2OBJECT
    
    --Fetching Customer DMZ VLAN
    LEFT OUTER JOIN SERVICEOBJECT SO17 ON SO17.SERVICEOBJECT2SERVICE=SMAUC1.SERVICEID
    AND SO17.SERVICEOBJECT2RELATION=1955100027
    LEFT OUTER JOIN DIMNUMBER CUST_DMZ_VLAN ON CUST_DMZ_VLAN.DIMNUMBERID=SO17.SERVICEOBJECT2OBJECT
    
    
    --Fetching REVERSEPROXYURL for SMAUC port
    LEFT OUTER JOIN SERVICE_EXT_SMAUC EXT_SMAUC ON EXT_SMAUC.SERVICEID=SMAUC1.SERVICEID
    )
    ,
    SBC_PORT AS(SELECT MAIN_TRUNK.NAME SBV_SERVICE,PORT_NO.NAME SBC_PORT_NO
    FROM SERVICE MAIN_TRUNK LEFT OUTER JOIN SERVICEOBJECT SO
    ON SO.SERVICEOBJECT2SERVICE=MAIN_TRUNK.SERVICEID
    AND SO.SERVICEOBJECT2RELATION=3100000065
    AND SO.SERVICEOBJECT2DIMOBJECT=3
    JOIN CIRCUIT CKT ON CKT.CIRCUITID=SO.SERVICEOBJECT2OBJECT
    LEFT OUTER JOIN NODE PBX ON PBX.NODE2NODEDEF=3100000000
    AND PBX.NODEID IN (CKT.CIRCUIT2STARTNODE,CKT.CIRCUIT2ENDNODE)
    LEFT OUTER JOIN PORT P ON P.PORTID=DECODE(PBX.NODEID,CKT.CIRCUIT2STARTNODE,CKT.CIRCUIT2STARTPORT,CKT.CIRCUIT2ENDPORT)
    LEFT OUTER JOIN NUMBEROBJECT NOB ON NOB.NUMBEROBJECT2OBJECT=P.PORTID
    AND NOB.NUMBEROBJECT2RELATION=3100000031
    LEFT OUTER JOIN DIMNUMBER PORT_NO ON PORT_NO.DIMNUMBERID=NOB.NUMBEROBJECT2NUMBER)
    
    
    
    SELECT SUAS_INFO.SUAS_SERVICE,SUAS_INFO.SUBSCRIBER_NAME,SUAS_INFO.SMAUC_SERVICE,SUAS_INFO.SIPVPN_MAIN_SERVICE,
    SUAS_INFO.SIPVPN_RED_SERVICE,SUAS_INFO.SIPSBV_MAIN,SUAS_INFO.SIPSBV_RED,SMAUC_REL.SID_MAIN_NAME,SMAUC_REL.SID_RED_NAME,SMAUC_REL.CUST_ACC_SUBNET,
    SMAUC_REL.SEC_SUBNET,SMAUC_REL.GLBL_DMZ_SUBNET,SMAUC_REL.GLBL_DMZ_ZONE_IP GLBL_DMZ_ZONE_IP,SMAUC_REL.CUST_DMZ_SUBNET,SMAUC_REL.CUST_PUB_IP_EDGE,SMAUC_REL.CUST_PUB_SBC_B2B_IP,
    SMAUC_REL.PUBLIC_REVRS_PRXY_MOB_IP,SMAUC_REL.CUST_ACCZONE_VLAN,SMAUC_REL.SEC_ZONE_VLAN,SMAUC_REL.GLBL_DMZ_VLAN,SMAUC_REL.CUST_DMZ_VLAN,SMAUC_REL.CUST_REVERSEPROXYURL,
    SBC.SBC_PORT_NO SBC_PORT_NUM
    
    FROM SUAS_INFO 
                   LEFT OUTER JOIN SMAUC_REL ON SMAUC_REL.SMAUC_SERVICEID=SUAS_INFO.SMAUC_SERVICE_ID
                   LEFT OUTER JOIN SBC_PORT SBC  ON SBC.SBV_SERVICE=SUAS_INFO.SIPSBV_MAIN
                   ORDER BY SUAS_INFO.SUAS_SERVICE;
    

3 个答案:

答案 0 :(得分:0)

通过SQL Tuning Advisor(如果获得许可)运行它。

此外,如果外部联接只是一个查找,您可以通过在选择列表中使用select语句来消除外部联接(这有时可以提高性能)。

答案 1 :(得分:0)

When confronted with a multi-part query such as yours, I would study each part independently - and make use of explain plans as I go.

For example, in your original query, the first CTE contains this:

 SELECT
    S.NAME SUAS_SERVICE
  , S.SERVICEID SUAS_SERVICE_ID
  , SUB.NAME SUBSCRIBER_NAME
  , SMAUC.SERVICEID SMAUC_SERVICE_ID
  , SMAUC.NAME SMAUC_SERVICE
  , SIPVPN_MAIN.NAME SIPVPN_MAIN_SERVICE
  , SIPVPN_RED.NAME SIPVPN_RED_SERVICE
  , SIPSBV.NAME SIPSBV_MAIN
  , SIPSBV_RED.NAME SIPSBV_RED
 FROM SERVICE S
 INNER JOIN SUBSCRIBER SUB ON SUB.SUBSCRIBERID = S.SERVICE2SUBSCRIBER AND S.SERVICE2SERVICETYPE = 1955100016
 --Fetching SMAUC service
 LEFT JOIN SERVICEOBJECT SO1 ON SO1.SERVICEOBJECT2SERVICE = S.SERVICEID AND SO1.SERVICEOBJECT2RELATION = 1955100029
 LEFT JOIN SERVICE SMAUC ON SMAUC.SERVICEID = SO1.SERVICEOBJECT2OBJECT
 --Fetching SIPVPN MAIN service
 LEFT JOIN SERVICEOBJECT SO2 ON SO2.SERVICEOBJECT2SERVICE = S.SERVICEID AND SO2.SERVICEOBJECT2RELATION = 1955100023
 LEFT JOIN SERVICE SIPVPN_MAIN ON SIPVPN_MAIN.SERVICEID = SO2.SERVICEOBJECT2OBJECT
 --Fetching SIPVPN Redundant service
 LEFT JOIN SERVICEOBJECT SO3 ON SO3.SERVICEOBJECT2SERVICE = S.SERVICEID AND SO3.SERVICEOBJECT2RELATION = 1955100042
 LEFT JOIN SERVICE SIPVPN_RED ON SIPVPN_RED.SERVICEID = SO3.SERVICEOBJECT2OBJECT
 --Fetching SBV SIP Trunk IMS service
 LEFT JOIN SERVICEOBJECT SO4 ON SO4.SERVICEOBJECT2SERVICE = S.SERVICEID AND SO4.SERVICEOBJECT2RELATION = 1955100030
 LEFT JOIN SERVICE SIPSBV ON SIPSBV.SERVICEID = SO4.SERVICEOBJECT2OBJECT
 --Fetching Redundant SBV SIP Trunk IMS service
 LEFT JOIN SERVICEOBJECT SO5 ON SO5.SERVICEOBJECT2SERVICE = S.SERVICEID AND SO5.SERVICEOBJECT2RELATION = 1955100031
 LEFT JOIN SERVICE SIPSBV_RED ON SIPSBV_RED.SERVICEID = SO5.SERVICEOBJECT2OBJECT

Perhaps reducing the number of left joins will help?

SELECT
      S1.NAME SUAS_SERVICE
    , S1.SERVICEID SUAS_SERVICE_ID
    , SUB.NAME SUBSCRIBER_NAME
    , listagg(case when SO.SERVICEOBJECT2RELATION = 1955100029 then s2.SERVICEID end, ',') SMAUC_SERVICE_ID
    , listagg(case when SO.SERVICEOBJECT2RELATION = 1955100029 then s2.NAME end, ',') SMAUC_SERVICE
    , listagg(case when SO.SERVICEOBJECT2RELATION = 1955100023 then s2.NAME end, ',') SIPVPN_MAIN_SERVICE
    , listagg(case when SO.SERVICEOBJECT2RELATION = 1955100042 then s2.NAME end, ',') SIPVPN_RED_SERVICE
    , listagg(case when SO.SERVICEOBJECT2RELATION = 1955100030 then s2.NAME end, ',') SIPSBV_MAIN
    , listagg(case when SO.SERVICEOBJECT2RELATION = 1955100031 then s2.NAME end, ',') SIPSBV_RED
FROM SERVICE S1 
INNER JOIN SUBSCRIBER SUB ON SUB.SUBSCRIBERID = S1.SERVICE2SUBSCRIBER 
LEFT JOIN SERVICEOBJECT SO ON SO.SERVICEOBJECT2SERVICE = S.SERVICEID
   AND SO.SERVICEOBJECT2RELATION IN (1955100029 , 1955100029, 1955100023, 1955100042, 1955100030, 1955100031)
LEFT JOIN SERVICE S2 ON SMAUC.SERVICEID = SO.SERVICEOBJECT2OBJECT
WHERE S1.SERVICE2SERVICETYPE = 1955100016
GROUP BY
      S1.NAME 
    , S1.SERVICEID 
    , SUB.NAME 

Add the regexp_relace as needed.

Continue to the next CTE.

答案 2 :(得分:0)

通过@ Used-By-Already给出的小提示,我可以在查询中做一些调整,它确实解决了我的问题。 在我的查询中没有注意到一个重要的过滤器。

/* Formatted on 11.20.2018 5:10:07  (QP5 v5.300) */
WITH SUAS_INFO
     AS --Get SUAS service details
        (  SELECT S.NAME        SUAS_SERVICE,
                  S.SERVICEID   SUAS_SERVICE_ID,
                  SUB.NAME      SUBSCRIBER_NAME,
                  SMAUC.SERVICEID SMAUC_SERVICE_ID,
                  SMAUC.NAME    SMAUC_SERVICE,
                  REGEXP_REPLACE (
                      LISTAGG (SIPVPN_MAIN.NAME, ',')
                          WITHIN GROUP (ORDER BY SIPVPN_MAIN.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SIPVPN_MAIN_SERVICE,
                  REGEXP_REPLACE (
                      LISTAGG (SIPVPN_RED.NAME, ',')
                          WITHIN GROUP (ORDER BY SIPVPN_RED.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SIPVPN_RED_SERVICE,
                  REGEXP_REPLACE (
                      LISTAGG (SIPSBV.NAME, ',')
                          WITHIN GROUP (ORDER BY SIPSBV.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SIPSBV_MAIN,
                  REGEXP_REPLACE (
                      LISTAGG (SIPSBV_RED.NAME, ',')
                          WITHIN GROUP (ORDER BY SIPSBV_RED.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SIPSBV_RED,
                  REGEXP_REPLACE (
                      LISTAGG (PORT_NO.NAME, ',')
                          WITHIN GROUP (ORDER BY PORT_NO.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SBC_PORT_NO
             FROM SERVICE S
                  JOIN SUBSCRIBER SUB
                      ON SUB.SUBSCRIBERID = S.SERVICE2SUBSCRIBER
                  --Fetching SMAUC service
                  LEFT OUTER JOIN SERVICEOBJECT SO1
                      ON     SO1.SERVICEOBJECT2SERVICE = S.SERVICEID
                         AND SO1.SERVICEOBJECT2RELATION = 1955100029
                  LEFT OUTER JOIN SERVICE SMAUC
                      ON SMAUC.SERVICEID = SO1.SERVICEOBJECT2OBJECT
                  --Fetching SIPVPN MAIN service
                  LEFT OUTER JOIN SERVICEOBJECT SO2
                      ON     SO2.SERVICEOBJECT2SERVICE = S.SERVICEID
                         AND SO2.SERVICEOBJECT2RELATION = 1955100023
                  LEFT OUTER JOIN SERVICE SIPVPN_MAIN
                      ON SIPVPN_MAIN.SERVICEID = SO2.SERVICEOBJECT2OBJECT
                  --Fetching SIPVPN Redundant service
                  LEFT OUTER JOIN SERVICEOBJECT SO3
                      ON     SO3.SERVICEOBJECT2SERVICE = S.SERVICEID
                         AND SO3.SERVICEOBJECT2RELATION = 1955100042
                  LEFT OUTER JOIN SERVICE SIPVPN_RED
                      ON SIPVPN_RED.SERVICEID = SO3.SERVICEOBJECT2OBJECT
                  --Fetching SBV SIP Trunk IMS service
                  LEFT OUTER JOIN SERVICEOBJECT SO4
                      ON     SO4.SERVICEOBJECT2SERVICE = S.SERVICEID
                         AND SO4.SERVICEOBJECT2RELATION = 1955100030
                  LEFT OUTER JOIN SERVICE SIPSBV
                      ON SIPSBV.SERVICEID = SO4.SERVICEOBJECT2OBJECT
                  --Fetching Redundant SBV SIP Trunk IMS service
                  LEFT OUTER JOIN SERVICEOBJECT SO5
                      ON     SO5.SERVICEOBJECT2SERVICE = S.SERVICEID
                         AND SO5.SERVICEOBJECT2RELATION = 1955100031
                  LEFT OUTER JOIN SERVICE SIPSBV_RED
                      ON SIPSBV_RED.SERVICEID = SO5.SERVICEOBJECT2OBJECT
                  -- Fetching SBC Port details
                  LEFT OUTER JOIN SERVICEOBJECT SO6
                      ON     SO6.SERVICEOBJECT2SERVICE = SIPSBV.SERVICEID
                         AND SO6.SERVICEOBJECT2RELATION = 3100000065
                         AND SO6.SERVICEOBJECT2DIMOBJECT = 3
                  LEFT OUTER JOIN CIRCUIT CKT
                      ON CKT.CIRCUITID = SO6.SERVICEOBJECT2OBJECT
                  LEFT OUTER JOIN NODE PBX
                      ON     PBX.NODE2NODEDEF = 3100000000
                         AND PBX.NODEID IN
                                 (CKT.CIRCUIT2STARTNODE, CKT.CIRCUIT2ENDNODE)
                  LEFT OUTER JOIN PORT P
                      ON P.PORTID =
                             DECODE (
                                 PBX.NODEID,
                                 CKT.CIRCUIT2STARTNODE, CKT.CIRCUIT2STARTPORT,
                                 CKT.CIRCUIT2ENDPORT)
                  LEFT OUTER JOIN NUMBEROBJECT NOB
                      ON     NOB.NUMBEROBJECT2OBJECT = P.PORTID
                         AND NOB.NUMBEROBJECT2RELATION = 3100000031
                  LEFT OUTER JOIN DIMNUMBER PORT_NO
                      ON PORT_NO.DIMNUMBERID = NOB.NUMBEROBJECT2NUMBER
            WHERE S.SERVICE2SERVICETYPE = 1955100016
         GROUP BY S.NAME,
                  S.SERVICEID,
                  SUB.NAME,
                  SMAUC.SERVICEID,
                  SMAUC.NAME),
     SMAUC_REL
     AS (  SELECT SMAUC1.SERVICEID        SMAUC_SERVICEID,
                  REGEXP_REPLACE (
                      LISTAGG (SID_MAIN.NAME, ',')
                          WITHIN GROUP (ORDER BY SID_MAIN.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SID_MAIN_NAME,
                  REGEXP_REPLACE (
                      LISTAGG (SID_RED.NAME, ',')
                          WITHIN GROUP (ORDER BY SID_RED.NAME),
                      '([^,]+)(,\1)*(,|$)',
                      '\1\3')
                      SID_RED_NAME,
                  SEC_SUBNET.NAME         SEC_SUBNET,
                  GLBL_DMZ_SUBNET.NAME    GLBL_DMZ_SUBNET,
                  GLBL_DMZ_IP.NAME        GLBL_DMZ_ZONE_IP,
                  CUST_DMZ_SUBNET.NAME    CUST_DMZ_SUBNET,
                  CUST_PUB_IP.NAME        CUST_PUB_IP_EDGE,
                  CUST_PUB_SBC.NAME       CUST_PUB_SBC_B2B_IP,
                  PUB_REV_PRX.NAME        PUBLIC_REVRS_PRXY_MOB_IP,
                  CUST_ACC_SUB.NAME       CUST_ACC_SUBNET,
                  EXT_SMAUC.REVERSEPROXYURL CUST_REVERSEPROXYURL,
                  CUST_ACS_VLAN.VALUETO   CUST_ACCZONE_VLAN,
                  SEC_ZONE_VLAN.VALUETO   SEC_ZONE_VLAN,
                  GLBL_DMZ_VLAN.VALUETO   GLBL_DMZ_VLAN,
                  CUST_DMZ_VLAN.VALUETO   CUST_DMZ_VLAN,
                  MAIN_SBC.NAME           MAIN_SBC_DEVICE
             FROM SERVICE SMAUC1
                  --Fetching SID Main service
                  LEFT OUTER JOIN SERVICEOBJECT SO6
                      ON     SO6.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO6.SERVICEOBJECT2RELATION = 1955100039
                  LEFT OUTER JOIN SERVICE SID_MAIN
                      ON SID_MAIN.SERVICEID = SO6.SERVICEOBJECT2OBJECT
                  --Fetching SID Redundant service
                  LEFT OUTER JOIN SERVICEOBJECT SO7
                      ON     SO7.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO7.SERVICEOBJECT2RELATION = 1955100038
                  LEFT OUTER JOIN SERVICE SID_RED
                      ON SID_RED.SERVICEID = SO7.SERVICEOBJECT2OBJECT
                  --Fetching Secure Zone Subnet Number
                  LEFT OUTER JOIN SERVICEOBJECT SO8
                      ON     SO8.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO8.SERVICEOBJECT2RELATION = 1955100041
                  LEFT OUTER JOIN DIMNUMBER SEC_SUBNET
                      ON SEC_SUBNET.DIMNUMBERID = SO8.SERVICEOBJECT2OBJECT
                  --Fetching Global DMZ Zone Subnet Number
                  LEFT OUTER JOIN SERVICEOBJECT SO9
                      ON     SO9.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO9.SERVICEOBJECT2RELATION = 1955100036
                  LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_SUBNET
                      ON GLBL_DMZ_SUBNET.DIMNUMBERID = SO9.SERVICEOBJECT2OBJECT
                  --Fetching Customer DMZ Subnet Number
                  LEFT OUTER JOIN SERVICEOBJECT SO10
                      ON     SO10.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO10.SERVICEOBJECT2RELATION = 1955100028
                  LEFT OUTER JOIN DIMNUMBER CUST_DMZ_SUBNET
                      ON CUST_DMZ_SUBNET.DIMNUMBERID =
                             SO10.SERVICEOBJECT2OBJECT
                  --Fetching Global DMZ Zone IP Number
                  LEFT OUTER JOIN SERVICEOBJECT SO_11
                      ON     SO_11.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO_11.SERVICEOBJECT2RELATION = 1955100043
                  LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_IP
                      ON GLBL_DMZ_IP.DIMNUMBERID = SO_11.SERVICEOBJECT2OBJECT
                  --Fetching Customer Public Edge IP Number
                  LEFT OUTER JOIN SERVICEOBJECT SO11
                      ON     SO11.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO11.SERVICEOBJECT2RELATION = 1955100024
                  LEFT OUTER JOIN DIMNUMBER CUST_PUB_IP
                      ON CUST_PUB_IP.DIMNUMBERID = SO11.SERVICEOBJECT2OBJECT
                  --Fetching Customer Public SBC B2B IP Number
                  LEFT OUTER JOIN SERVICEOBJECT SO12
                      ON     SO12.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO12.SERVICEOBJECT2RELATION = 1955100026
                  LEFT OUTER JOIN DIMNUMBER CUST_PUB_SBC
                      ON CUST_PUB_SBC.DIMNUMBERID = SO12.SERVICEOBJECT2OBJECT
                  --Fetching Public Reverse Proxy Mobile Access IP Number
                  LEFT OUTER JOIN SERVICEOBJECT SO13
                      ON     SO13.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO13.SERVICEOBJECT2RELATION = 1955100033
                  LEFT OUTER JOIN DIMNUMBER PUB_REV_PRX
                      ON PUB_REV_PRX.DIMNUMBERID = SO13.SERVICEOBJECT2OBJECT
                  --Fetching Customer Access Subnet Number
                  LEFT OUTER JOIN SERVICEOBJECT SO14
                      ON     SO14.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO14.SERVICEOBJECT2RELATION = 1955100035
                  LEFT OUTER JOIN DIMNUMBER CUST_ACC_SUB
                      ON CUST_ACC_SUB.DIMNUMBERID = SO14.SERVICEOBJECT2OBJECT
                  --Fetching Customer Access Zone VLAN
                  LEFT OUTER JOIN SERVICEOBJECT SO15
                      ON     SO15.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO15.SERVICEOBJECT2RELATION = 1955100034
                  LEFT OUTER JOIN DIMNUMBER CUST_ACS_VLAN
                      ON CUST_ACS_VLAN.DIMNUMBERID = SO15.SERVICEOBJECT2OBJECT
                  --Fetching Customer Secured Zone VLAN
                  LEFT OUTER JOIN SERVICEOBJECT SO16
                      ON     SO16.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO16.SERVICEOBJECT2RELATION = 1955100040
                  LEFT OUTER JOIN DIMNUMBER SEC_ZONE_VLAN
                      ON SEC_ZONE_VLAN.DIMNUMBERID = SO16.SERVICEOBJECT2OBJECT
                  --Fetching Global DMZ VLAN
                  LEFT OUTER JOIN SERVICEOBJECT SO17
                      ON     SO17.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO17.SERVICEOBJECT2RELATION = 1955100032
                  LEFT OUTER JOIN DIMNUMBER GLBL_DMZ_VLAN
                      ON GLBL_DMZ_VLAN.DIMNUMBERID = SO17.SERVICEOBJECT2OBJECT
                  --Fetching Customer DMZ VLAN
                  LEFT OUTER JOIN SERVICEOBJECT SO18
                      ON     SO18.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO18.SERVICEOBJECT2RELATION = 1955100027
                  LEFT OUTER JOIN DIMNUMBER CUST_DMZ_VLAN
                      ON CUST_DMZ_VLAN.DIMNUMBERID = SO18.SERVICEOBJECT2OBJECT
                  --Fetching Main SBC Node
                  LEFT OUTER JOIN SERVICEOBJECT SO19
                      ON     SO19.SERVICEOBJECT2SERVICE = SMAUC1.SERVICEID
                         AND SO19.SERVICEOBJECT2RELATION = 1955100044
                  LEFT OUTER JOIN NODE MAIN_SBC
                      ON MAIN_SBC.NODEID = SO19.SERVICEOBJECT2OBJECT
                  --Fetching REVERSEPROXYURL for SMAUC port
                  LEFT OUTER JOIN SERVICE_EXT_SMAUC EXT_SMAUC
                      ON EXT_SMAUC.SERVICEID = SMAUC1.SERVICEID
            WHERE SMAUC1.SERVICE2SERVICETYPE = 1955100017
         GROUP BY SMAUC1.SERVICEID,
                  SEC_SUBNET.NAME,
                  GLBL_DMZ_SUBNET.NAME,
                  GLBL_DMZ_IP.NAME,
                  CUST_DMZ_SUBNET.NAME,
                  CUST_PUB_IP.NAME,
                  CUST_PUB_SBC.NAME,
                  PUB_REV_PRX.NAME,
                  CUST_ACC_SUB.NAME,
                  EXT_SMAUC.REVERSEPROXYURL,
                  CUST_ACS_VLAN.VALUETO,
                  SEC_ZONE_VLAN.VALUETO,
                  GLBL_DMZ_VLAN.VALUETO,
                  CUST_DMZ_VLAN.VALUETO,
                  MAIN_SBC.NAME)
  SELECT SUAS_INFO.SUAS_SERVICE,
         SUAS_INFO.SUBSCRIBER_NAME,
         SUAS_INFO.SMAUC_SERVICE,
         SUAS_INFO.SIPVPN_MAIN_SERVICE,
         SUAS_INFO.SIPVPN_RED_SERVICE,
         SMAUC_REL.SID_MAIN_NAME,
         SMAUC_REL.SID_RED_NAME,
         SUAS_INFO.SIPSBV_MAIN,
         SUAS_INFO.SIPSBV_RED,
         SMAUC_REL.CUST_ACCZONE_VLAN,
         SMAUC_REL.CUST_ACC_SUBNET,
         SMAUC_REL.SEC_ZONE_VLAN,
         SMAUC_REL.SEC_SUBNET,
         SMAUC_REL.GLBL_DMZ_VLAN,
         SMAUC_REL.GLBL_DMZ_SUBNET,
         SMAUC_REL.GLBL_DMZ_ZONE_IP GLBL_DMZ_ZONE_IP,
         SMAUC_REL.CUST_DMZ_VLAN,
         SMAUC_REL.CUST_DMZ_SUBNET,
         SMAUC_REL.CUST_PUB_IP_EDGE,
         SMAUC_REL.CUST_PUB_SBC_B2B_IP,
         SMAUC_REL.PUBLIC_REVRS_PRXY_MOB_IP,
         SMAUC_REL.CUST_REVERSEPROXYURL,
         SUAS_INFO.SBC_PORT_NO,
         SMAUC_REL.MAIN_SBC_DEVICE
    FROM SUAS_INFO
         LEFT OUTER JOIN SMAUC_REL
             ON SMAUC_REL.SMAUC_SERVICEID = SUAS_INFO.SMAUC_SERVICE_ID
ORDER BY SUAS_INFO.SUAS_SERVICE;