4

Morning People,

I'm having a little issue with COALESCE causing a stored procedure which is writing data to a table to run excessively. (without the COALESCE it takes 4 minutes and with it it takes 1 hour 30 minutes ish).

I need this staging table's f_ columns to be clear of NULLs as these will be used for calculus later on in the warehouse which is then being displayed to Cognos reporting studio.

There are 161 columns that require this and I have also tried to do a "CASE WHEN X IS NULL THEN 0 ELSE X" which apparently has a lower impact but still takes an Hour and a half.

Also have added "DEFAULT 0" to the tables build with no joys.

Stored Procedure follows (Apologies in advance for the sheer size of it)

TRUNCATE TABLE
    ST_PIT_BOOKINGCOSTS

INSERT INTO
    ST_PIT_BOOKINGCOSTS
SELECT DISTINCT
    ST_PIT_BOOKINGHEADERS.i_SK_Bkg,
    ST_PIT_BOOKINGHEADERS.i_SK_Version,
    0 AS f_BkgTransportPax,
    0 AS f_BkgTransportQuantity,
    0 AS f_BkgTransportAdults,
    0 AS f_BkgTransportChildren,
    0 AS f_BkgTransportInfants,
    0 AS f_BkgTransportRevenue,
    0 AS f_BkgTransportCost,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Pax,0) AS f_BkgFltPax,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Quantity,0) AS f_BkgFltQuantity,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Adults,0) AS f_BkgFltAdults,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Children,0) AS f_BkgFltChildren,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Infants,0) AS f_BkgFltInfants,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Revenue,0) AS f_BkgFltRevenue,
    COALESCE(ST_V_FC_FLIGHTCOSTS_AIR.f_Cost,0) AS f_BkgFltCost,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Pax,0) AS f_BkgFerryPax,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Quantity,0) AS f_BkgFerryQuantity,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Adults,0) AS f_BkgFerryAdults,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Children,0) AS f_BkgFerryChildren,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Infants,0) AS f_BkgFerryInfants,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Revenue,0) AS f_BkgFerryRevenue,
    COALESCE(ST_V_FC_FLIGHTCOSTS_FER.f_Cost,0) AS f_BkgFerryCost,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Pax,0) AS f_BkgTrainPax,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Quantity,0) AS f_BkgTrainQuantity,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Adults,0) AS f_BkgTrainAdults,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Children,0) AS f_BkgTrainChildren,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Infants,0) AS f_BkgTrainInfants,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Revenue,0) AS f_BkgTrainRevenue,
    COALESCE(ST_V_FC_FLIGHTCOSTS_TRN.f_Cost,0) AS f_BkgTrainCost,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Pax,0) AS f_BkgAccomPax,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Quantity,0) AS f_BkgAccomQuantity,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Adults,0) AS f_BkgAccomAdults,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Children,0) AS f_BkgAccomChildren,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Infants,0) AS f_BkgAccomInfants,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Revenue,0) AS f_BkgAccomRevenue,
    COALESCE(ST_V_AC_ACCOMCOSTS.f_Cost,0) AS f_BkgAccomCost,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Pax,0) AS f_BkgExtraACTIPax,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Quantity,0) AS f_BkgExtraACTIQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Adults,0) AS f_BkgExtraACTIAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Children,0) AS f_BkgExtraACTIChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Infants,0) AS f_BkgExtraACTIInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Revenue,0) AS f_BkgExtraACTIRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_ACTI.f_Cost,0) AS f_BkgExtraACTICost,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Pax,0) AS f_BkgExtraCARHPax,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Quantity,0) AS f_BkgExtraCARHQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Adults,0) AS f_BkgExtraCARHAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Children,0) AS f_BkgExtraCARHChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Infants,0) AS f_BkgExtraCARHInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Revenue,0) AS f_BkgExtraCARHRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_CARH.f_Cost,0) AS f_BkgExtraCARHCost,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Pax,0) AS f_BkgExtraCARIPax,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Quantity,0) AS f_BkgExtraCARIQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Adults,0) AS f_BkgExtraCARIAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Children,0) AS f_BkgExtraCARIChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Infants,0) AS f_BkgExtraCARIInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Revenue,0) AS f_BkgExtraCARIRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_CARI.f_Cost,0) AS f_BkgExtraCARICost,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Pax,0) AS f_BkgExtraCHLDPax,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Quantity,0) AS f_BkgExtraCHLDQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Adults,0) AS f_BkgExtraCHLDAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Children,0) AS f_BkgExtraCHLDChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Infants,0) AS f_BkgExtraCHLDInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Revenue,0) AS f_BkgExtraCHLDRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_CHLD.f_Cost,0) AS f_BkgExtraCHLDCost,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Pax,0) AS f_BkgExtraCLUBPax,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Quantity,0) AS f_BkgExtraCLUBQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Adults,0) AS f_BkgExtraCLUBAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Children,0) AS f_BkgExtraCLUBChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Infants,0) AS f_BkgExtraCLUBInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Revenue,0) AS f_BkgExtraCLUBRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_CLUB.f_Cost,0) AS f_BkgExtraCLUBCost,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Pax,0) AS f_BkgExtraCRECPax,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Quantity,0) AS f_BkgExtraCRECQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Adults,0) AS f_BkgExtraCRECAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Children,0) AS f_BkgExtraCRECChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Infants,0) AS f_BkgExtraCRECInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Revenue,0) AS f_BkgExtraCRECRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_CREC.f_Cost,0) AS f_BkgExtraCRECCost,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Pax,0) AS f_BkgExtraEQUIPax,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Quantity,0) AS f_BkgExtraEQUIQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Adults,0) AS f_BkgExtraEQUIAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Children,0) AS f_BkgExtraEQUIChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Infants,0) AS f_BkgExtraEQUIInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Revenue,0) AS f_BkgExtraEQUIRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_EQUI.f_Cost,0) AS f_BkgExtraEQUICost,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Pax,0) AS f_BkgExtraEXCUPax,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Quantity,0) AS f_BkgExtraEXCUQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Adults,0) AS f_BkgExtraEXCUAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Children,0) AS f_BkgExtraEXCUChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Infants,0) AS f_BkgExtraEXCUInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Revenue,0) AS f_BkgExtraEXCURevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_EXCU.f_Cost,0) AS f_BkgExtraEXCUCost,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Pax,0) AS f_BkgExtraFLTRPax,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Quantity,0) AS f_BkgExtraFLTRQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Adults,0) AS f_BkgExtraFLTRAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Children,0) AS f_BkgExtraFLTRChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Infants,0) AS f_BkgExtraFLTRInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Revenue,0) AS f_BkgExtraFLTRRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_FLTR.f_Cost,0) AS f_BkgExtraFLTRCost,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Pax,0) AS f_BkgExtraINSRPax,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Quantity,0) AS f_BkgExtraINSRQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Adults,0) AS f_BkgExtraINSRAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Children,0) AS f_BkgExtraINSRChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Infants,0) AS f_BkgExtraINSRInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Revenue,0) AS f_BkgExtraINSRRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_INSR.f_Cost,0) AS f_BkgExtraINSRCost,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Pax,0) AS f_BkgExtraOTHRPax,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Quantity,0) AS f_BkgExtraOTHRQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Adults,0) AS f_BkgExtraOTHRAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Children,0) AS f_BkgExtraOTHRChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Infants,0) AS f_BkgExtraOTHRInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Revenue,0) AS f_BkgExtraOTHRRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_OTHR.f_Cost,0) AS f_BkgExtraOTHRCost,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Pax,0) AS f_BkgExtraSKIPPax,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Quantity,0) AS f_BkgExtraSKIPQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Adults,0) AS f_BkgExtraSKIPAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Children,0) AS f_BkgExtraSKIPChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Infants,0) AS f_BkgExtraSKIPInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Revenue,0) AS f_BkgExtraSKIPRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIP.f_Cost,0) AS f_BkgExtraSKIPCost,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Pax,0) AS f_BkgExtraSKITPax,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Quantity,0) AS f_BkgExtraSKITQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Adults,0) AS f_BkgExtraSKITAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Children,0) AS f_BkgExtraSKITChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Infants,0) AS f_BkgExtraSKITInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Revenue,0) AS f_BkgExtraSKITRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_SKIT.f_Cost,0) AS f_BkgExtraSKITCost,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Pax,0) AS f_BkgExtraSPIOPax,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Quantity,0) AS f_BkgExtraSPIOQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Adults,0) AS f_BkgExtraSPIOAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Children,0) AS f_BkgExtraSPIOChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Infants,0) AS f_BkgExtraSPIOInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Revenue,0) AS f_BkgExtraSPIORevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_SPIO.f_Cost,0) AS f_BkgExtraSPIOCost,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Pax,0) AS f_BkgExtraSPORPax,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Quantity,0) AS f_BkgExtraSPORQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Adults,0) AS f_BkgExtraSPORAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Children,0) AS f_BkgExtraSPORChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Infants,0) AS f_BkgExtraSPORInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Revenue,0) AS f_BkgExtraSPORRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_SPOR.f_Cost,0) AS f_BkgExtraSPORCost,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Pax,0) AS f_BkgExtraSTNDPax,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Quantity,0) AS f_BkgExtraSTNDQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Adults,0) AS f_BkgExtraSTNDAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Children,0) AS f_BkgExtraSTNDChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Infants,0) AS f_BkgExtraSTNDInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Revenue,0) AS f_BkgExtraSTNDRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_STND.f_Cost,0) AS f_BkgExtraSTNDCost,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Pax,0) AS f_BkgExtraTRAFPax,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Quantity,0) AS f_BkgExtraTRAFQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Adults,0) AS f_BkgExtraTRAFAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Children,0) AS f_BkgExtraTRAFChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Infants,0) AS f_BkgExtraTRAFInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Revenue,0) AS f_BkgExtraTRAFRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_TRAF.f_Cost,0) AS f_BkgExtraTRAFCost,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Pax,0) AS f_BkgExtraXXXXPax,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Quantity,0) AS f_BkgExtraXXXXQuantity,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Adults,0) AS f_BkgExtraXXXXAdults,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Children,0) AS f_BkgExtraXXXXChildren,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Infants,0) AS f_BkgExtraXXXXInfants,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Revenue,0) AS f_BkgExtraXXXXRevenue,
    COALESCE(ST_V_EC_EXTRACOSTS_XXXX.f_Cost,0) AS f_BkgExtraXXXXCost,
    0 AS f_DiffTransportPax,
    0 AS f_DiffTransportQuantity,
    0 AS f_DiffTransportAdults,
    0 AS f_DiffTransportChildren,
    0 AS f_DiffTransportInfants,
    0 AS f_DiffTransportRevenue,
    0 AS f_DiffTransportCost,
    0 AS f_DiffFltPax,
    0 AS f_DiffFltQuantity,
    0 AS f_DiffFltAdults,
    0 AS f_DiffFltChildren,
    0 AS f_DiffFltInfants,
    0 AS f_DiffFltRevenue,
    0 AS f_DiffFltCost,
    0 AS f_DiffFerryPax,
    0 AS f_DiffFerryQuantity,
    0 AS f_DiffFerryAdults,
    0 AS f_DiffFerryChildren,
    0 AS f_DiffFerryInfants,
    0 AS f_DiffFerryRevenue,
    0 AS f_DiffFerryCost,
    0 AS f_DiffTrainPax,
    0 AS f_DiffTrainQuantity,
    0 AS f_DiffTrainAdults,
    0 AS f_DiffTrainChildren,
    0 AS f_DiffTrainInfants,
    0 AS f_DiffTrainRevenue,
    0 AS f_DiffTrainCost,
    0 AS f_DiffAccomPax,
    0 AS f_DiffAccomQuantity,
    0 AS f_DiffAccomAdults,
    0 AS f_DiffAccomChildren,
    0 AS f_DiffAccomInfants,
    0 AS f_DiffAccomRevenue,
    0 AS f_DiffAccomCost,
    0 AS f_DiffExtraACTIPax,
    0 AS f_DiffExtraACTIQuantity,
    0 AS f_DiffExtraACTIAdults,
    0 AS f_DiffExtraACTIChildren,
    0 AS f_DiffExtraACTIInfants,
    0 AS f_DiffExtraACTIRevenue,
    0 AS f_DiffExtraACTICost,
    0 AS f_DiffExtraCARHPax,
    0 AS f_DiffExtraCARHQuantity,
    0 AS f_DiffExtraCARHAdults,
    0 AS f_DiffExtraCARHChildren,
    0 AS f_DiffExtraCARHInfants,
    0 AS f_DiffExtraCARHRevenue,
    0 AS f_DiffExtraCARHCost,
    0 AS f_DiffExtraCARIPax,
    0 AS f_DiffExtraCARIQuantity,
    0 AS f_DiffExtraCARIAdults,
    0 AS f_DiffExtraCARIChildren,
    0 AS f_DiffExtraCARIInfants,
    0 AS f_DiffExtraCARIRevenue,
    0 AS f_DiffExtraCARICost,
    0 AS f_DiffExtraCHLDPax,
    0 AS f_DiffExtraCHLDQuantity,
    0 AS f_DiffExtraCHLDAdults,
    0 AS f_DiffExtraCHLDChildren,
    0 AS f_DiffExtraCHLDInfants,
    0 AS f_DiffExtraCHLDRevenue,
    0 AS f_DiffExtraCHLDCost,
    0 AS f_DiffExtraCLUBPax,
    0 AS f_DiffExtraCLUBQuantity,
    0 AS f_DiffExtraCLUBAdults,
    0 AS f_DiffExtraCLUBChildren,
    0 AS f_DiffExtraCLUBInfants,
    0 AS f_DiffExtraCLUBRevenue,
    0 AS f_DiffExtraCLUBCost,
    0 AS f_DiffExtraCRECPax,
    0 AS f_DiffExtraCRECQuantity,
    0 AS f_DiffExtraCRECAdults,
    0 AS f_DiffExtraCRECChildren,
    0 AS f_DiffExtraCRECInfants,
    0 AS f_DiffExtraCRECRevenue,
    0 AS f_DiffExtraCRECCost,
    0 AS f_DiffExtraEQUIPax,
    0 AS f_DiffExtraEQUIQuantity,
    0 AS f_DiffExtraEQUIAdults,
    0 AS f_DiffExtraEQUIChildren,
    0 AS f_DiffExtraEQUIInfants,
    0 AS f_DiffExtraEQUIRevenue,
    0 AS f_DiffExtraEQUICost,
    0 AS f_DiffExtraEXCUPax,
    0 AS f_DiffExtraEXCUQuantity,
    0 AS f_DiffExtraEXCUAdults,
    0 AS f_DiffExtraEXCUChildren,
    0 AS f_DiffExtraEXCUInfants,
    0 AS f_DiffExtraEXCURevenue,
    0 AS f_DiffExtraEXCUCost,
    0 AS f_DiffExtraFLTRPax,
    0 AS f_DiffExtraFLTRQuantity,
    0 AS f_DiffExtraFLTRAdults,
    0 AS f_DiffExtraFLTRChildren,
    0 AS f_DiffExtraFLTRInfants,
    0 AS f_DiffExtraFLTRRevenue,
    0 AS f_DiffExtraFLTRCost,
    0 AS f_DiffExtraINSRPax,
    0 AS f_DiffExtraINSRQuantity,
    0 AS f_DiffExtraINSRAdults,
    0 AS f_DiffExtraINSRChildren,
    0 AS f_DiffExtraINSRInfants,
    0 AS f_DiffExtraINSRRevenue,
    0 AS f_DiffExtraINSRCost,
    0 AS f_DiffExtraOTHRPax,
    0 AS f_DiffExtraOTHRQuantity,
    0 AS f_DiffExtraOTHRAdults,
    0 AS f_DiffExtraOTHRChildren,
    0 AS f_DiffExtraOTHRInfants,
    0 AS f_DiffExtraOTHRRevenue,
    0 AS f_DiffExtraOTHRCost,
    0 AS f_DiffExtraSKIPPax,
    0 AS f_DiffExtraSKIPQuantity,
    0 AS f_DiffExtraSKIPAdults,
    0 AS f_DiffExtraSKIPChildren,
    0 AS f_DiffExtraSKIPInfants,
    0 AS f_DiffExtraSKIPRevenue,
    0 AS f_DiffExtraSKIPCost,
    0 AS f_DiffExtraSKITPax,
    0 AS f_DiffExtraSKITQuantity,
    0 AS f_DiffExtraSKITAdults,
    0 AS f_DiffExtraSKITChildren,
    0 AS f_DiffExtraSKITInfants,
    0 AS f_DiffExtraSKITRevenue,
    0 AS f_DiffExtraSKITCost,
    0 AS f_DiffExtraSPIOPax,
    0 AS f_DiffExtraSPIOQuantity,
    0 AS f_DiffExtraSPIOAdults,
    0 AS f_DiffExtraSPIOChildren,
    0 AS f_DiffExtraSPIOInfants,
    0 AS f_DiffExtraSPIORevenue,
    0 AS f_DiffExtraSPIOCost,
    0 AS f_DiffExtraSPORPax,
    0 AS f_DiffExtraSPORQuantity,
    0 AS f_DiffExtraSPORAdults,
    0 AS f_DiffExtraSPORChildren,
    0 AS f_DiffExtraSPORInfants,
    0 AS f_DiffExtraSPORRevenue,
    0 AS f_DiffExtraSPORCost,
    0 AS f_DiffExtraSTNDPax,
    0 AS f_DiffExtraSTNDQuantity,
    0 AS f_DiffExtraSTNDAdults,
    0 AS f_DiffExtraSTNDChildren,
    0 AS f_DiffExtraSTNDInfants,
    0 AS f_DiffExtraSTNDRevenue,
    0 AS f_DiffExtraSTNDCost,
    0 AS f_DiffExtraTRAFPax,
    0 AS f_DiffExtraTRAFQuantity,
    0 AS f_DiffExtraTRAFAdults,
    0 AS f_DiffExtraTRAFChildren,
    0 AS f_DiffExtraTRAFInfants,
    0 AS f_DiffExtraTRAFRevenue,
    0 AS f_DiffExtraTRAFCost,
    0 AS f_DiffExtraXXXXPax,
    0 AS f_DiffExtraXXXXQuantity,
    0 AS f_DiffExtraXXXXAdults,
    0 AS f_DiffExtraXXXXChildren,
    0 AS f_DiffExtraXXXXInfants,
    0 AS f_DiffExtraXXXXRevenue,
    0 AS f_DiffExtraXXXXCost
FROM
    AMI_Stage.dbo.ST_PIT_BOOKINGHEADERS ST_PIT_BOOKINGHEADERS
LEFT JOIN
    AMI_GALAXY.dbo.CONF_DT_BOOKING CONF_DT_BOOKING
    ON
        CONF_DT_BOOKING.i_SK_Bkg = ST_PIT_BOOKINGHEADERS.I_SK_BKG
LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_XXXX
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_XXXX.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_XXXX.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_XXXX.i_BK_ExtraType = 'XXXX'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_TRAF
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_TRAF.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_TRAF.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_TRAF.i_BK_ExtraType = 'TRAF'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_STND
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_STND.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_STND.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_STND.i_BK_ExtraType = 'STND'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_SPOR
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_SPOR.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_SPOR.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_SPOR.i_BK_ExtraType = 'SPOR'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_SPIO
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_SPIO.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_SPIO.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_SPIO.i_BK_ExtraType = 'SPIO'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_SKIT
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_SKIT.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_SKIT.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_SKIT.i_BK_ExtraType = 'SKIT'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_SKIP
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_SKIP.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_SKIP.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_SKIP.i_BK_ExtraType = 'SKIP'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_OTHR
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_OTHR.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_OTHR.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_OTHR.i_BK_ExtraType = 'OTHR'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_INSR
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_INSR.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_INSR.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_INSR.i_BK_ExtraType = 'INSR'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_FLTR
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_FLTR.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_FLTR.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_FLTR.i_BK_ExtraType = 'FLTR'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_EXCU
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_EXCU.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_EXCU.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_EXCU.i_BK_ExtraType = 'EXCU'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_EQUI
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_EQUI.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_EQUI.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_EQUI.i_BK_ExtraType = 'EQUI'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_CREC
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_CREC.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_CREC.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_CREC.i_BK_ExtraType = 'CREC'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_CLUB
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_CLUB.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_CLUB.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_CLUB.i_BK_ExtraType = 'CLUB'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_CHLD
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_CHLD.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_CHLD.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_CHLD.i_BK_ExtraType = 'CHLD'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_CARI
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_CARI.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_CARI.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_CARI.i_BK_ExtraType = 'CARI'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_CARH
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_CARH.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_CARH.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_CARH.i_BK_ExtraType = 'CARH'

LEFT JOIN
    AMI_Stage.dbo.ST_V_EC_EXTRACOSTS ST_V_EC_EXTRACOSTS_ACTI
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_EC_EXTRACOSTS_ACTI.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_EC_EXTRACOSTS_ACTI.i_BK_Version
        AND
        ST_V_EC_EXTRACOSTS_ACTI.i_BK_ExtraType = 'ACTI'
LEFT JOIN
    AMI_Stage.dbo.ST_V_AC_ACCOMCOSTS ST_V_AC_ACCOMCOSTS
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_AC_ACCOMCOSTS.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_AC_ACCOMCOSTS.i_BK_Version
LEFT JOIN
    AMI_Stage.dbo.ST_V_FC_FLIGHTCOSTS ST_V_FC_FLIGHTCOSTS
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_FC_FLIGHTCOSTS.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_FC_FLIGHTCOSTS.i_BK_Version
LEFT JOIN
    AMI_Stage.dbo.ST_V_FC_FLIGHTCOSTS ST_V_FC_FLIGHTCOSTS_AIR
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_FC_FLIGHTCOSTS_AIR.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_FC_FLIGHTCOSTS_AIR.i_BK_Version
        AND
        ST_V_FC_FLIGHTCOSTS_AIR.i_BK_TransportType = 'AIR'
LEFT JOIN
    AMI_Stage.dbo.ST_V_FC_FLIGHTCOSTS ST_V_FC_FLIGHTCOSTS_FER
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_FC_FLIGHTCOSTS_FER.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_FC_FLIGHTCOSTS_FER.i_BK_Version
        AND
        ST_V_FC_FLIGHTCOSTS_FER.i_BK_TransportType = 'FER'
LEFT JOIN
    AMI_Stage.dbo.ST_V_FC_FLIGHTCOSTS ST_V_FC_FLIGHTCOSTS_TRN
    ON
        CONF_DT_BOOKING.i_BK_BkgConcat = ST_V_FC_FLIGHTCOSTS_TRN.i_BK_Bkg
        AND
        ST_PIT_BOOKINGHEADERS.I_SK_VERSION = ST_V_FC_FLIGHTCOSTS_TRN.i_BK_Version
        AND
        ST_V_FC_FLIGHTCOSTS_TRN.i_BK_TransportType = 'TRN'
Marcus Culver
  • 305
  • 1
  • 4
  • 8
  • Forgot to say. Thanks for any help you can provide – Marcus Culver Aug 28 '12 at 10:42
  • 2
    What do the execution plans show? – Martin Smith Aug 28 '12 at 10:46
  • Can you state which potential solutions you are willing to try, to save us making suggestions which you find unacceptable? – podiluska Aug 28 '12 at 11:04
  • I've not seen anything out of the ordinary with the execution plans. Majority of the effort is in the table insert (which to my knowledge is a good thing :) ) – Marcus Culver Aug 28 '12 at 11:07
  • The solutions needs to have an ease of effort (keep it simple) as per a previous comment of mine 161 update statements is something of a last resort. – Marcus Culver Aug 28 '12 at 11:08
  • Have you tried `ISNULL` or `CASE` instead of `COALESCE`? – Yuck Aug 28 '12 at 11:10
  • You might have to deal with COALESCE adding unintended data type conversions (see http://dba.stackexchange.com/a/4277/2397). Also you could try `ISNULL(...)` as an alternative. – MicSim Aug 28 '12 at 11:11
  • 1
    161 updates that you could generate *automatically*. Given that you don't have any better ideas, I don't understand why you're unwilling to try it to determine the performance difference. – podiluska Aug 28 '12 at 11:11
  • 1
    Can you post the XML for both plans? There must be something else going on. replacing `COALESCE(scalar1, constant)` with `ISNULL(scalar1, constant)` won't on its own make this type of difference. – Martin Smith Aug 28 '12 at 12:26

1 Answers1

3

First of all, you can try ISNULL, which has a better performance (but not as much as you need), however it is quicker.

Here is a reference for an older StackOverlow thread: Which is quicker COALESCE OR ISNULL?

UPDATED:

It meant a huge difference in performance:

"Marcus Culver: Across 730,000 rows 154 columns being ISNULL'd took 00:02:34 as opposed to coalesce at 01:32:43"

Community
  • 1
  • 1
András Ottó
  • 7,605
  • 1
  • 28
  • 38