I have a query which is having a huge performance degrade. Could you help in optimizaiton of the same.
Select
DPS_NUM,
DPS_TYPE,
DPS_STATUS,
CUSTOMER_TYPE,
CUSTOMER_NAME,
SEVERITY_ID,
PRODUCT_NO,
ENGG_PART_ETA,
DECODE(ENGINEER_PART_ETA_F
LAG,'','No
ne',ENGINE
ER_PART_ET
A_FLAG) ENGINEER_PART_ETA_FLAG ,
PROBLEM_COUNT,
DPS_ALERT_FLAG,
DPS_OWNER,
REASON_CODE,
DPS_REPEAT_DISPATCH_FLAG,
DPS_ACK_FLAG,
CALL_AGE,
TAKE,
CLAIM_ALERT_FLAG,
REPEATDISPATCH_ALERT_FLAG,
SEVERITY_ALERT_FLAG,
DPS_TYPE_FLAG,
SERVICE_ACC_DATE_TIME,
DPS_VERSION_NUM,
IS_TANDEM_CLIENT_UPDATE
FROM
(
SELECT
VWJDPSIS.DPS_NUM AS DPS_NUM,
VWJDPSIS.DPS_TYPE as DPS_TYPE,
VWJDPSIS.DPS_STATUS as DPS_STATUS,
ECCPRD.fnGetRefCodeValue(V
WJDPSIS.CA
LL_TYPE,'C
USTOMERTYP
E') as CUSTOMER_TYPE,
VWJDPSIS.CUSTOMER_NAME as CUSTOMER_NAME,
ECCPRD.fnGetRefCodeValue(V
WJDPSIS.SE
VERITY_ID,
'SEVERITYC
ODE') as SEVERITY_ID,
VWJDPSIS.BRAND_DESCRIPTION
AS PRODUCT_NO,
substr(VWJDPSIS.ENGINEER_P
ART_ETA,3,
28) AS ENGG_PART_ETA,
substr(VWJDPSIS.ENGINEER_P
ART_ETA,1,
2) ENGINEER_PART_ETA_FLAG,
decode(PROBLEM_COUNT,NULL,
0,ECCDPS.P
ROBLEM_COU
NT) AS PROBLEM_COUNT,
ECCDPS.DPS_ALERT_FLAG as DPS_ALERT_FLAG,
Lower(ECCDPS.DPS_OWNER_ID)
as DPS_OWNER,
VWJDPSIS.REASON_CODE as REASON_CODE,
CASE WHEN
REASON_CODE LIKE ('02%')
THEN
'Y'
ELSE
DPS_REPEAT_DISPATCH_FLAG END AS DPS_REPEAT_DISPATCH_FLAG,
DPS_ACK_FLAG AS DPS_ACK_FLAG,
ECCPRD.fnGetCallAgeValue(S
ERVICE_ACC
_DATE_TIME
) AS CALL_AGE,
'Take' AS TAKE,
CASE WHEN
REASON_CODE LIKE ('01TA')
THEN
'Y'
ELSE
'N' END AS CLAIM_ALERT_FLAG,
CASE WHEN
REASON_CODE IN ( SELECT
INFO_VALUE
FROM ECCPRD.SYSTEM_INFO
WHERE
UPPER(INFO_CATEGORY) = UPPER('ALERTTYPE')
AND UPPER(INFO_CODE) = UPPER('REPEAT'))
THEN
'Y'
ELSE
'N' END AS REPEATDISPATCH_ALERT_FLAG,
CASE WHEN
to_char(SEVERITY_ID) IN ( SELECT
INFO_VALUE
FROM ECCPRD.SYSTEM_INFO
WHERE UPPER(INFO_CATEGORY) = UPPER('ALERTTYPE')
AND UPPER(INFO_CODE) = UPPER('SEVERITY'))
THEN
'Y'
ELSE
'N' END AS SEVERITY_ALERT_FLAG,
VWJDPSIS.LOB_PRODUCT_DESCR
IPTION AS DPS_TYPE_FLAG,
SERVICE_ACC_DATE_TIME,
VWJDPSIS.DPS_VERSION_NUM ,
VWJDPSIS.IS_TANDEM_CLIENT_
UPDATE
FROM
ECCPRD.JDPSIS_DPS_INFO_VIE
W VWJDPSIS
LEFT OUTER JOIN
ECCPRD.DPS_INFO ECCDPS ON VWJDPSIS.DPS_NUM = ECCDPS.DPS_NUM
WHERE
VWJDPSIS.DSP_CODE in
( SELECT
INFO_CODE
FROM
ECCPRD.SYSTEM_INFO
WHERE
INFO_CATEGORY = 'DSPCODE')
AND VWJDPSIS.DPS_TYPE in
( SELECT
INFO_CODE
FROM
ECCPRD.SYSTEM_INFO
WHERE
INFO_CATEGORY = 'DPSTYPE'
AND INFO_VALUE<>'NBD') AND
(DPS_STATUS <> 'DONE'
AND DPS_STATUS <> 'CNL'
AND DPS_STATUS <> 'DCNL'
AND DPS_STATUS <> 'CLO'
AND DPS_STATUS <> 'DRCV'
AND DPS_STATUS <> 'RCV'
AND DPS_STATUS <> 'TWFA')
AND VWJDPSIS.DPS_VERSION_NUM = (SELECT
MAX(DPS_VERSION_NUM)
from
ECCPRD.JDPSIS_DPS_INFO_VIE
W DPSIN
WHERE
DPSIN.DPS_NUM=VWJDPSIS.DPS
_NUM)
UNION
Select
VWJDPSIS.DPS_NUM AS DPS_NUM,
VWJDPSIS.DPS_TYPE as DPS_TYPE,
VWJDPSIS.DPS_STATUS as DPS_STATUS,
ECCPRD.fnGetRefCodeValue(V
WJDPSIS.Ca
ll_TYPE,'C
USTOMERTYP
E') as CUSTOMER_TYPE,
VWJDPSIS.CUSTOMER_NAME as CUSTOMER_NAME,
ECCPRD.fnGetRefCodeValue(V
WJDPSIS.SE
VERITY_ID,
'SEVERITYC
ODE') as SEVERITY_ID,
VWJDPSIS.BRAND_DESCRIPTION
AS PRODUCT_NO,
substr(VWJDPSIS.ENGINEER_P
ART_ETA,3,
28) AS ENGG_PART_ETA,
DECODE(substr(VWJDPSIS.ENG
INEER_PART
_ETA,1,2),
'','None',
substr(VWJ
DPSIS.ENGI
NEER_PART_
ETA,1,2))
ENGINEER_PART_ETA_FLAG ,
decode(PROBLEM_COUNT,NULL,
0,ECCDPS.P
ROBLEM_COU
NT) AS PROBLEM_COUNT,
ECCDPS.DPS_ALERT_FLAG as DPS_ALERT_FLAG,
ECCDPS.DPS_OWNER_ID as DPS_OWNER,
ECCPRD.VWJDPSIS.REASON_COD
E as REASON_CODE,
CASE WHEN
REASON_CODE LIKE ('02%')
THEN
'Y'
ELSE
DPS_REPEAT_DISPATCH_FLAG END AS DPS_REPEAT_DISPATCH_FLAG,
DPS_ACK_FLAG AS DPS_ACK_FLAG,
ECCPRD.fnGetCallAgeValue(S
ERVICE_ACC
_DATE_TIME
) AS CALL_AGE,
'Take' AS TAKE,
CASE WHEN
REASON_CODE LIKE ('01TA')
THEN
'Y'
ELSE
'N' END AS CLAIM_ALERT_FLAG,
CASE WHEN
REASON_CODE IN ( SELECT
INFO_VALUE
FROM
ECCPRD.SYSTEM_INFO
WHERE
UPPER(INFO_CATEGORY) = UPPER('ALERTTYPE')
AND UPPER(INFO_CODE) = UPPER('REPEAT'))
THEN
'Y'
ELSE
'N' END AS REPEATDISPATCH_ALERT_FLAG,
CASE WHEN
to_char(SEVERITY_ID) IN ( SELECT
INFO_VALUE
FROM
ECCPRD.SYSTEM_INFO
WHERE
UPPER(INFO_CATEGORY) = UPPER('ALERTTYPE') AND
UPPER(INFO_CODE) = UPPER('SEVERITY'))
THEN
'Y'
ELSE
'N' END AS SEVERITY_ALERT_FLAG,
VWJDPSIS.LOB_PRODUCT_DESCR
IPTION AS DPS_TYPE_FLAG,
SERVICE_ACC_DATE_TIME,
VWJDPSIS.DPS_VERSION_NUM,
VWJDPSIS.IS_TANDEM_CLIENT_
UPDATE
FROM
ECCPRD.JDPSIS_DPS_INFO_VIE
W VWJDPSIS
LEFT OUTER JOIN
ECCPRD.DPS_INFO ECCDPS ON VWJDPSIS.DPS_NUM = ECCDPS.DPS_NUM
WHERE
VWJDPSIS.DSP_CODE in (SELECT
INFO_CODE
FROM
ECCPRD.SYSTEM_INFO
WHERE
INFO_CATEGORY = 'DSPCODE')
AND VWJDPSIS.DPS_TYPE in (SELECT
INFO_CODE
FROM
ECCPRD.SYSTEM_INFO
WHERE
INFO_CATEGORY = 'DPSTYPE'
AND INFO_VALUE = 'NBD')
AND (VWJDPSIS.CALL_TYPE IN(SELECT
INFO_CODE
FROM
ECCPRD.SYSTEM_INFO
WHERE
info_CATEGORY='CUSTOMERTYP
E'
AND INFO_VALUE IN ('G/K','G','K') )
OR
VWJDPSIS.LOB_PRODUCT_DESCR
IPTION IN ('EMC','PowerConnect')
OR
VWJDPSIS.DPS_NUM IN (SELECT
dps_num
FROM
ECCPRD.DPS_INFO
WHERE
dps_repeat_dispatch_flag ='Y' )
OR
REASON_CODE LIKE ('01TA')
OR
REASON_CODE LIKE ('02%')
OR
to_char(VWJDPSIS.SEVERITY_
ID) IN ( SELECT
INFO_value
FROM
ECCPRD.SYSTEM_INFO
WHERE
INFO_code='SEVERITY'
AND
info_CATEGORY='ALERTTYPE')
OR
VWJDPSIS.DPS_NUM IN (SELECT
dps_num
FROM
ECCPRD.ALERT_DETAILS
WHERE alert_code= 'OVER5H'
AND ALERT_ACTIVE_FLAG='Y'))
AND (DPS_STATUS <> 'DONE'
AND DPS_STATUS <> 'CNL'
AND DPS_STATUS <> 'DCNL'
AND DPS_STATUS <> 'CLO'
AND DPS_STATUS <> 'DRCV'
AND DPS_STATUS <> 'RCV'
AND DPS_STATUS <> 'TWFA')
AND VWJDPSIS.DPS_VERSION_NUM = (SELECT
MAX(DPS_VERSION_NUM)
from
ECCPRD.JDPSIS_DPS_INFO_VIE
W DPSIN
WHERE
DPSIN.DPS_NUM=VWJDPSIS.DPS
_NUM) )
ORDER BY DPS_NUM DESC
Start Free Trial