Ver Mensaje Individual
  #8 (permalink)  
Antiguo 14/03/2014, 08:13
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Consulta tarda demasiado la segunda vez

Un plan de ejecución de esta consulta ayudaría:

Código SQL:
Ver original
  1. SELECT "MND_NR",
  2. "NDL_NR",
  3. "AUF_ID",
  4. "FAT_ID",
  5. "RIA_ID",
  6. "OEM_ID",
  7. "LKT_ID",
  8. "LKT_LAUF",
  9. "TPO_ID",
  10. "TPO_ID_END",
  11. "VERS_ROLLE",
  12. "VERS_ADR",
  13. "VERS_NAME1",
  14. "VERS_STRASSE",
  15. "VERS_LKZ",
  16. "VERS_PLZ",
  17. "VERS_ORT",
  18. "VERS_LADESTELLE",
  19. "VERS_LADEZONE",
  20. "AHIS_ID",
  21. "AUF_ANLIEFERUNG",
  22. "KOSTEN",
  23. "KOSTEN_EV",
  24. "ERLOES",
  25. "LKT_POS",
  26. "LKT_ENTLADEN",
  27. "LKT_ENTLADEN_SYSTEM",
  28. "LKT_ABHOL_ANLIEF_WAB",
  29. "LKT_ABFAHRT_VON",
  30. "LKT_ANKUNFT_VON"
  31. FROM ( -- HL - nicht freigegeben
  32. SELECT a.MND_NR,
  33. a.NDL_NR,
  34. A.AUF_ID,
  35. A.FAT_ID,
  36. a.RIA_ID,
  37. A.OEM_ID,
  38. T.LKT_ID,
  39. T.LKT_LAUF,
  40. A.TPO_ID_HL AS TPO_ID,
  41. A.TPO_ID_HL_END AS TPO_ID_END,
  42. NVL (hist.AHIS_ABHOL_ROLLE, a.AUF_ABHOL_ROLLE)
  43. AS VERS_ROLLE,
  44. NVL (hist.AHIS_ABHOL_ADR, a.AUF_ABHOL_ADR) AS VERS_ADR,
  45. NVL (hist.AHIS_ABHOL_NAME1, a.AUF_ABHOL_NAME1)
  46. AS VERS_NAME1,
  47. NVL (hist.AHIS_ABHOL_STRASSE, a.AUF_ABHOL_STRASSE)
  48. AS VERS_STRASSE,
  49. NVL (hist.AHIS_ABHOL_LKZ, a.AUF_ABHOL_LKZ) AS VERS_LKZ,
  50. NVL (hist.AHIS_ABHOL_PLZ, a.AUF_ABHOL_PLZ) AS VERS_PLZ,
  51. NVL (hist.AHIS_ABHOL_ORT, a.AUF_ABHOL_ORT) AS VERS_ORT,
  52. NVL (hist.AHIS_ABHOLSTELLE, a.AUF_ABHOLSTELLE)
  53. AS VERS_LADESTELLE,
  54. NVL (hist.AHIS_ABHOLZONE, a.AUF_ABHOLZONE) AS VERS_LADEZONE,
  55. TO_NUMBER (NULL) AS AHIS_ID,
  56. a.AUF_ANLIEFERUNG,
  57. NVL (NVL (a.AUF_KOSTEN_PAU_HL, A.AUF_KOSTEN_VERTEILT), 0)
  58. AS KOSTEN,
  59. 0 AS KOSTEN_EV,
  60. NVL (NVL (a.AUF_ERLOES_HL_MANUELL, A.AUF_ERLOES_HL), 0)
  61. AS ERLOES,
  62. A.LKT_POS_HL AS LKT_POS,
  63. A.LKT_HL_ENTLADEN AS LKT_ENTLADEN,
  64. A.LKT_HL_ENTLADEN_SYSTEM AS LKT_ENTLADEN_SYSTEM,
  65. a.LKT_HL_ABHOL_ANLIEF_WAB AS LKT_ABHOL_ANLIEF_WAB,
  66. T.LKT_ABFAHRT_VON,
  67. T.LKT_ANKUNFT_VON
  68. FROM DISPO2.TB_AUFTRAG a,
  69. DISPO2.TB_LKW_TOUR t,
  70. DISPO2.tb_auf_historie hist
  71. WHERE A.LKT_ID_HL = T.LKT_ID
  72. AND NOT EXISTS
  73. (SELECT 1
  74. FROM DISPO2.TB_AUF_HISTORIE h
  75. WHERE a.AUF_ID = h.AUF_ID AND t.LKT_ID = h.LKT_ID)
  76. -- mit welchem Historieneintrag für den genannten Auftrag
  77. -- wurde die erste Abholung gemacht?
  78. AND a.AUF_ID = hist.AUF_ID(+)
  79. AND DISPO2.GET_FIRST_AUF_HIST_INDEX (a.AUF_ID) =
  80. hist.AHIS_INDEX(+)
  81. UNION
  82. -- VL - nicht freigegeben
  83. SELECT a.MND_NR,
  84. a.NDL_NR,
  85. A.AUF_ID,
  86. A.FAT_ID,
  87. a.RIA_ID,
  88. A.OEM_ID,
  89. T.LKT_ID,
  90. T.LKT_LAUF,
  91. A.TPO_ID_VL AS TPO_ID,
  92. A.TPO_ID_VL_END AS TPO_ID_END,
  93. NVL (hist.AHIS_ABHOL_ROLLE, a.AUF_ABHOL_ROLLE)
  94. AS VERS_ROLLE,
  95. NVL (hist.AHIS_ABHOL_ADR, a.AUF_ABHOL_ADR) AS VERS_ADR,
  96. NVL (hist.AHIS_ABHOL_NAME1, a.AUF_ABHOL_NAME1)
  97. AS VERS_NAME1,
  98. NVL (hist.AHIS_ABHOL_STRASSE, a.AUF_ABHOL_STRASSE)
  99. AS VERS_STRASSE,
  100. NVL (hist.AHIS_ABHOL_LKZ, a.AUF_ABHOL_LKZ) AS VERS_LKZ,
  101. NVL (hist.AHIS_ABHOL_PLZ, a.AUF_ABHOL_PLZ) AS VERS_PLZ,
  102. NVL (hist.AHIS_ABHOL_ORT, a.AUF_ABHOL_ORT) AS VERS_ORT,
  103. NVL (hist.AHIS_ABHOLSTELLE, a.AUF_ABHOLSTELLE)
  104. AS VERS_LADESTELLE,
  105. NVL (hist.AHIS_ABHOLZONE, a.AUF_ABHOLZONE) AS VERS_LADEZONE,
  106. TO_NUMBER (NULL) AS AHIS_ID,
  107. a.AUF_ANLIEFERUNG,
  108. NVL (A.AUF_KOSTEN_VERTEILT, 0) AS KOSTEN,
  109. 0 AS KOSTEN_EV,
  110. NVL (NVL (a.AUF_ERLOES_VL_MANUELL, A.AUF_ERLOES_VL), 0)
  111. AS ERLOES,
  112. A.LKT_POS_VL AS LKT_POS,
  113. A.LKT_VL_ENTLADEN AS LKT_ENTLADEN,
  114. A.LKT_VL_ENTLADEN_SYSTEM AS LKT_ENTLADEN_SYSTEM,
  115. a.LKT_VL_ABHOL_ANLIEF_WAB AS LKT_ABHOL_ANLIEF_WAB,
  116. T.LKT_ABFAHRT_VON,
  117. T.LKT_ANKUNFT_VON
  118. FROM DISPO2.TB_AUFTRAG a,
  119. DISPO2.TB_LKW_TOUR t,
  120. DISPO2.tb_auf_historie hist
  121. WHERE A.LKT_ID_VL = T.LKT_ID
  122. AND NOT EXISTS
  123. (SELECT 1
  124. FROM DISPO2.TB_AUF_HISTORIE h
  125. WHERE a.AUF_ID = h.AUF_ID AND t.LKT_ID = h.LKT_ID)
  126. -- mit welchem Historieneintrag für den genannten Auftrag
  127. -- wurde die erste Abholung gemacht?
  128. AND a.AUF_ID = hist.AUF_ID(+)
  129. AND DISPO2.GET_FIRST_AUF_HIST_INDEX (a.AUF_ID) =
  130. hist.AHIS_INDEX(+)
  131. UNION
  132. -- Historie (alles was freigegeben ist)
  133. SELECT a.MND_NR,
  134. a.NDL_NR,
  135. A.AUF_ID,
  136. A.FAT_ID,
  137. a.RIA_ID,
  138. A.OEM_ID,
  139. T.LKT_ID,
  140. H.AHIS_LAUF AS LKT_LAUF,
  141. h.TPO_ID,
  142. h.TPO_ID_END,
  143. NVL (hist.AHIS_ABHOL_ROLLE, a.AUF_ABHOL_ROLLE)
  144. AS VERS_ROLLE,
  145. NVL (hist.AHIS_ABHOL_ADR, a.AUF_ABHOL_ADR) AS VERS_ADR,
  146. NVL (hist.AHIS_ABHOL_NAME1, a.AUF_ABHOL_NAME1)
  147. AS VERS_NAME1,
  148. NVL (hist.AHIS_ABHOL_STRASSE, a.AUF_ABHOL_STRASSE)
  149. AS VERS_STRASSE,
  150. NVL (hist.AHIS_ABHOL_LKZ, a.AUF_ABHOL_LKZ) AS VERS_LKZ,
  151. NVL (hist.AHIS_ABHOL_PLZ, a.AUF_ABHOL_PLZ) AS VERS_PLZ,
  152. NVL (hist.AHIS_ABHOL_ORT, a.AUF_ABHOL_ORT) AS VERS_ORT,
  153. NVL (hist.AHIS_ABHOLSTELLE, a.AUF_ABHOLSTELLE)
  154. AS VERS_LADESTELLE,
  155. NVL (hist.AHIS_ABHOLZONE, a.AUF_ABHOLZONE) AS VERS_LADEZONE,
  156. h.AHIS_ID,
  157. a.AUF_ANLIEFERUNG,
  158. -- KOSTEN - bei HL gehen die Kosten nicht in die Historie
  159. DECODE (
  160. H.AHIS_LAUF,
  161. 'HL', NVL (
  162. NVL (a.AUF_KOSTEN_PAU_HL,
  163. A.AUF_KOSTEN_VERTEILT),
  164. 0),
  165. NVL (NVL (h.AHIS_KOSTEN_PAU, h.AHIS_KOSTEN_VERTEILT), 0))
  166. AS KOSTEN,
  167. -- KOSTEN EV (Umschlag) - bei HL gehen die Kosten nicht in die Historie
  168. DECODE (H.AHIS_LAUF,
  169. 'HL', NVL (A.AUF_KOSTEN_EV, 0),
  170. NVL (H.AHIS_KOSTEN_EV, 0))
  171. AS KOSTEN_EV,
  172. -- Bei HL gehen die Erlöse nicht in die Historie
  173. DECODE (
  174. H.AHIS_LAUF,
  175. 'HL', NVL (
  176. NVL (a.AUF_ERLOES_HL_MANUELL, A.AUF_ERLOES_HL),
  177. 0),
  178. NVL (NVL (h.AHIS_ERLOES_MANUELL, h.AHIS_ERLOES), 0))
  179. AS ERLOES,
  180. H.LKT_POS,
  181. H.LKT_ENTLADEN,
  182. H.LKT_ENTLADEN_SYSTEM,
  183. H.LKT_ABHOL_ANLIEF_WAB,
  184. T.LKT_ABFAHRT_VON,
  185. T.LKT_ANKUNFT_VON
  186. FROM DISPO2.TB_AUFTRAG a,
  187. DISPO2.TB_LKW_TOUR t,
  188. DISPO2.TB_AUF_HISTORIE h,
  189. DISPO2.tb_auf_historie hist
  190. WHERE h.LKT_ID = T.LKT_ID
  191. AND A.AUF_ID = h.AUF_ID
  192. -- mit welchem Historieneintrag für den genannten Auftrag
  193. -- wurde die erste Abholung gemacht?
  194. AND a.AUF_ID = hist.AUF_ID(+)
  195. AND DISPO2.GET_FIRST_AUF_HIST_INDEX (a.AUF_ID) =
  196. 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