Respuesta: Consulta tarda demasiado la segunda vez Un plan de ejecución de esta consulta ayudaría:
Código SQL:
Ver originalSELECT "MND_NR", "NDL_NR", "AUF_ID", "FAT_ID", "RIA_ID", "OEM_ID", "LKT_ID", "LKT_LAUF", "TPO_ID", "TPO_ID_END", "VERS_ROLLE", "VERS_ADR", "VERS_NAME1", "VERS_STRASSE", "VERS_LKZ", "VERS_PLZ", "VERS_ORT", "VERS_LADESTELLE", "VERS_LADEZONE", "AHIS_ID", "AUF_ANLIEFERUNG", "KOSTEN", "KOSTEN_EV", "ERLOES", "LKT_POS", "LKT_ENTLADEN", "LKT_ENTLADEN_SYSTEM", "LKT_ABHOL_ANLIEF_WAB", "LKT_ABFAHRT_VON", "LKT_ANKUNFT_VON" FROM ( -- HL - nicht freigegeben SELECT a.MND_NR, a.NDL_NR, A.AUF_ID, A.FAT_ID, a.RIA_ID, A.OEM_ID, T.LKT_ID, T.LKT_LAUF, A.TPO_ID_HL AS TPO_ID, A.TPO_ID_HL_END AS TPO_ID_END, NVL (hist.AHIS_ABHOL_ROLLE, a.AUF_ABHOL_ROLLE) AS VERS_ROLLE, NVL (hist.AHIS_ABHOL_ADR, a.AUF_ABHOL_ADR) AS VERS_ADR, NVL (hist.AHIS_ABHOL_NAME1, a.AUF_ABHOL_NAME1) AS VERS_NAME1, NVL (hist.AHIS_ABHOL_STRASSE, a.AUF_ABHOL_STRASSE) AS VERS_STRASSE, NVL (hist.AHIS_ABHOL_LKZ, a.AUF_ABHOL_LKZ) AS VERS_LKZ, NVL (hist.AHIS_ABHOL_PLZ, a.AUF_ABHOL_PLZ) AS VERS_PLZ, NVL (hist.AHIS_ABHOL_ORT, a.AUF_ABHOL_ORT) AS VERS_ORT, NVL (hist.AHIS_ABHOLSTELLE, a.AUF_ABHOLSTELLE) AS VERS_LADESTELLE, NVL (hist.AHIS_ABHOLZONE, a.AUF_ABHOLZONE) AS VERS_LADEZONE, TO_NUMBER (NULL) AS AHIS_ID, a.AUF_ANLIEFERUNG, NVL (NVL (a.AUF_KOSTEN_PAU_HL, A.AUF_KOSTEN_VERTEILT), 0) AS KOSTEN, 0 AS KOSTEN_EV, NVL (NVL (a.AUF_ERLOES_HL_MANUELL, A.AUF_ERLOES_HL), 0) AS ERLOES, A.LKT_POS_HL AS LKT_POS, A.LKT_HL_ENTLADEN AS LKT_ENTLADEN, A.LKT_HL_ENTLADEN_SYSTEM AS LKT_ENTLADEN_SYSTEM, a.LKT_HL_ABHOL_ANLIEF_WAB AS LKT_ABHOL_ANLIEF_WAB, T.LKT_ABFAHRT_VON, T.LKT_ANKUNFT_VON FROM DISPO2.TB_AUFTRAG a, DISPO2.TB_LKW_TOUR t, DISPO2.tb_auf_historie hist WHERE A.LKT_ID_HL = T.LKT_ID AND NOT EXISTS (SELECT 1 FROM DISPO2.TB_AUF_HISTORIE h WHERE a.AUF_ID = h.AUF_ID AND t.LKT_ID = h.LKT_ID) -- mit welchem Historieneintrag für den genannten Auftrag -- wurde die erste Abholung gemacht? AND a.AUF_ID = hist.AUF_ID(+) AND DISPO2.GET_FIRST_AUF_HIST_INDEX (a.AUF_ID) = hist.AHIS_INDEX(+) UNION -- VL - nicht freigegeben SELECT a.MND_NR, a.NDL_NR, A.AUF_ID, A.FAT_ID, a.RIA_ID, A.OEM_ID, T.LKT_ID, T.LKT_LAUF, A.TPO_ID_VL AS TPO_ID, A.TPO_ID_VL_END AS TPO_ID_END, NVL (hist.AHIS_ABHOL_ROLLE, a.AUF_ABHOL_ROLLE) AS VERS_ROLLE, NVL (hist.AHIS_ABHOL_ADR, a.AUF_ABHOL_ADR) AS VERS_ADR, NVL (hist.AHIS_ABHOL_NAME1, a.AUF_ABHOL_NAME1) AS VERS_NAME1, NVL (hist.AHIS_ABHOL_STRASSE, a.AUF_ABHOL_STRASSE) AS VERS_STRASSE, NVL (hist.AHIS_ABHOL_LKZ, a.AUF_ABHOL_LKZ) AS VERS_LKZ, NVL (hist.AHIS_ABHOL_PLZ, a.AUF_ABHOL_PLZ) AS VERS_PLZ, NVL (hist.AHIS_ABHOL_ORT, a.AUF_ABHOL_ORT) AS VERS_ORT, NVL (hist.AHIS_ABHOLSTELLE, a.AUF_ABHOLSTELLE) AS VERS_LADESTELLE, NVL (hist.AHIS_ABHOLZONE, a.AUF_ABHOLZONE) AS VERS_LADEZONE, TO_NUMBER (NULL) AS AHIS_ID, a.AUF_ANLIEFERUNG, NVL (A.AUF_KOSTEN_VERTEILT, 0) AS KOSTEN, 0 AS KOSTEN_EV, NVL (NVL (a.AUF_ERLOES_VL_MANUELL, A.AUF_ERLOES_VL), 0) AS ERLOES, A.LKT_POS_VL AS LKT_POS, A.LKT_VL_ENTLADEN AS LKT_ENTLADEN, A.LKT_VL_ENTLADEN_SYSTEM AS LKT_ENTLADEN_SYSTEM, a.LKT_VL_ABHOL_ANLIEF_WAB AS LKT_ABHOL_ANLIEF_WAB, T.LKT_ABFAHRT_VON, T.LKT_ANKUNFT_VON FROM DISPO2.TB_AUFTRAG a, DISPO2.TB_LKW_TOUR t, DISPO2.tb_auf_historie hist WHERE A.LKT_ID_VL = T.LKT_ID AND NOT EXISTS (SELECT 1 FROM DISPO2.TB_AUF_HISTORIE h WHERE a.AUF_ID = h.AUF_ID AND t.LKT_ID = h.LKT_ID) -- mit welchem Historieneintrag für den genannten Auftrag -- wurde die erste Abholung gemacht? AND a.AUF_ID = hist.AUF_ID(+) AND DISPO2.GET_FIRST_AUF_HIST_INDEX (a.AUF_ID) = hist.AHIS_INDEX(+) UNION -- Historie (alles was freigegeben ist) SELECT a.MND_NR, a.NDL_NR, A.AUF_ID, A.FAT_ID, a.RIA_ID, A.OEM_ID, T.LKT_ID, H.AHIS_LAUF AS LKT_LAUF, h.TPO_ID, h.TPO_ID_END, NVL (hist.AHIS_ABHOL_ROLLE, a.AUF_ABHOL_ROLLE) AS VERS_ROLLE, NVL (hist.AHIS_ABHOL_ADR, a.AUF_ABHOL_ADR) AS VERS_ADR, NVL (hist.AHIS_ABHOL_NAME1, a.AUF_ABHOL_NAME1) AS VERS_NAME1, NVL (hist.AHIS_ABHOL_STRASSE, a.AUF_ABHOL_STRASSE) AS VERS_STRASSE, NVL (hist.AHIS_ABHOL_LKZ, a.AUF_ABHOL_LKZ) AS VERS_LKZ, NVL (hist.AHIS_ABHOL_PLZ, a.AUF_ABHOL_PLZ) AS VERS_PLZ, NVL (hist.AHIS_ABHOL_ORT, a.AUF_ABHOL_ORT) AS VERS_ORT, NVL (hist.AHIS_ABHOLSTELLE, a.AUF_ABHOLSTELLE) AS VERS_LADESTELLE, NVL (hist.AHIS_ABHOLZONE, a.AUF_ABHOLZONE) AS VERS_LADEZONE, h.AHIS_ID, a.AUF_ANLIEFERUNG, -- KOSTEN - bei HL gehen die Kosten nicht in die Historie DECODE ( H.AHIS_LAUF, 'HL', NVL ( NVL (a.AUF_KOSTEN_PAU_HL, A.AUF_KOSTEN_VERTEILT), 0), NVL (NVL (h.AHIS_KOSTEN_PAU, h.AHIS_KOSTEN_VERTEILT), 0)) AS KOSTEN, -- KOSTEN EV (Umschlag) - bei HL gehen die Kosten nicht in die Historie DECODE (H.AHIS_LAUF, 'HL', NVL (A.AUF_KOSTEN_EV, 0), NVL (H.AHIS_KOSTEN_EV, 0)) AS KOSTEN_EV, -- Bei HL gehen die Erlöse nicht in die Historie DECODE ( H.AHIS_LAUF, 'HL', NVL ( NVL (a.AUF_ERLOES_HL_MANUELL, A.AUF_ERLOES_HL), 0), NVL (NVL (h.AHIS_ERLOES_MANUELL, h.AHIS_ERLOES), 0)) AS ERLOES, H.LKT_POS, H.LKT_ENTLADEN, H.LKT_ENTLADEN_SYSTEM, H.LKT_ABHOL_ANLIEF_WAB, T.LKT_ABFAHRT_VON, T.LKT_ANKUNFT_VON FROM DISPO2.TB_AUFTRAG a, DISPO2.TB_LKW_TOUR t, DISPO2.TB_AUF_HISTORIE h, DISPO2.tb_auf_historie hist WHERE h.LKT_ID = T.LKT_ID AND A.AUF_ID = h.AUF_ID -- mit welchem Historieneintrag für den genannten Auftrag -- wurde die erste Abholung gemacht? AND a.AUF_ID = hist.AUF_ID(+) AND DISPO2.GET_FIRST_AUF_HIST_INDEX (a.AUF_ID) = hist.AHIS_INDEX(+));
Si estas en sql developer con f10 te sale el plan de ejecución. Esto nos dirá si esta usando bien los indices.
Con respecto a lo que dices de la misma BD en otra maquina, también puedes poner ese mismo plan de ejecución.
__________________ Without data, You are another person with an opinion.
W. Edwads Deming |