Delay in OQL query execution

0
We are forming a query which fetches data based on user search conditions selection. We have a base query on top of which user selected conditions are added under where condition. Below is final query(substituted real entity names). select distinct     w.TID,        cast(w.EC_Date as string) as  EC_Date,    cast(w.TEC_Date as string) as TEC_Date,    w.TCS as TCS,    w.DTM as DTM,    a.TSN as TSN,    wol.WOL_NME as WOL_NME,    ph.PN as PN,    CASE         WHEN du.USER_MIDDLE_NME IS NULL THEN              du.USER_FIRST_NME+' '+du.USER_LAST_NME        ELSE            du.USER_FIRST_NME+' '+du.USER_MIDDLE_NME+' '+du.USER_LAST_NME        END             as TEs,    w.WID as WID,    CASE        WHEN MY.MYN IS NULL THEN            pub.pub_NME            + '-'            + vh.vh_NME            + '-'            + pr.pr_NME        ELSE            MY.MDL_YR_CD            + '-'            + pub.pub_NME            + '-'            + vh.vh_NME            + '-'            + pr.pr_NME    END                         as TID_NME,    CASE         WHEN asg.USER_MIDDLE_NME IS NULL THEN              asg.USER_FIRST_NME+' '+asg.USER_LAST_NME        ELSE            asg.USER_FIRST_NME+' '+asg.USER_MIDDLE_NME+' '+asg.USER_LAST_NME        END             as    PH_ID_NME,    a.TID_NME+ ';'+ p.t_NAME as DVID,     cast( (SELECT COUNT(cid.SMID) as scFROM G.t_SPLS ts1left join ts1/G.t_SPLS_SPL/G.SPL sleft join s/G.CID_SPL/G.CID cidwhere cid.AFG != 'N'AND ts1.AFG != 'N'AND ts1.TID = w.TIDGROUP BY ts1.TID) as string) as spl_mv,    cast( (SELECT                        COUNT(ts.TID) AS qp        FROM            G.t tst            left join tst/G.t_SPLS_t/G.t_SPLS ts         WHERE             ts.AFG  = 'Y' and tst.WID=w.WID        GROUP BY            tst.TID    ) as string) as qty   ,    CASE        WHEN w.DTM IS NULL THEN            'N'        ELSE            'Y'    END   as DTM,    CASE        WHEN a.TSN IS NULL THEN            'N'        ELSE            'Y'    END  as PSS,    cast(w.WS_DATE as string) as WS_DATE,    cast(sef.t_SS_DATE as string) as t_SS_DATEfrom G.WO wleft join w/G.WO_t/G.t aleft join w/G.WO_WO_LC/MD.WO_LC wolleft join a/G.t_t_CENTER/MD.t_CENTER tcleft join a/G.PH_t_MAP_t/G.PH_t_MAP ptmleft join ptm/G.PH_t_MAP_PH/G.PH phleft join ph/G.PH_DP/G.DP dvpleft join dvp/G.DP_MDL_YR/MD.MDL_YR MYleft join dvp/G.DP_pub_CUSTOMER_ID/MD.pub publeft join dvp/G.DP_vh/MD.vh vhleft join dvp/G.DP_pr/MD.pr prleft join ph/G.PH_Users2_PH_ONR_ID/MD.USERS duleft join a/G.t_PRG/G.PRG pleft join a/G.t_SP_RE/G.SP_RE SP_REleft join SP_RE/G.SP_RE_SPCTN/G.SPCTN specleft join w/G.WO_USERS_asg_TNCN_ID/MD.USERS asgleft join dvp/G.DP_Users2_DP_ONR_ID/MD.USERS dvp_ownerleft join a/G.t_SPLS_t/G.t_SPLS ts ON ts.AFG='Y' or ts.AFG is nullleft join ts/G.t_SPLS_SPL/G.SPL spl ON spl.AFG='Y' or spl.AFG is nullleft join spl/G.SPL_SPL_TYPE/G.SPL_TYPE spl_type ON spl_type.AFG='Y' or spl_type.AFG is nullleft join a/G.t_t_CPNY/MD.t_CPNY a_companyleft join a/G.t_USERS_t_ORGTR/MD.USERS a_orgtrleft join w/G.SCDL_TECH_MAP_WO/G.SCDL_TECH_MAP stmleft join w/G.SCDL_EQT_FORM_WO/G.SCDL_EQT_FORM sefleft join w/G.HTR_WO_WO/G.HTR_WO hwleft join a/G.t_TDM_RQT/G.TDM_RQT tdmLEFT JOIN dvp/G.DP_OT_DP_TYPE_ID/MD.OT op_tleft join MD.USERS ra on w.LAtARVD_BY=ra.USER_IDleft join MD.USERS rvr on w.LAtRVD_BY=rvr.USER_IDleft join MD.USERS a_sbtr on w.LAtasg_BY=a_sbtr.USER_ID where a.AFG='Y' and ph.AFG='Y'  AND ( pub.pub_ID ='4' ) ORDER BY w.TID  LIMIT 500.   Any suggestions on improving performance?   Same query returns results quickly in local than in QA, Dev or Prod environments(almost data is same). 
asked
0 answers