Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/03/2014, 07:20
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta tarda demasiado la segunda vez

Una de las razones es simple de responder:
Cita:
la Tabla tiene varios indices, uno soble LKT_ABFAHRT_VON
Eso implica que tienes un campo DATE y un índice sobre este campo, el cual si no me equivoco alamcena fechas largas (Dias y horas).
Pero estás usando un TRUNC():
Código SQL:
Ver original
  1. AND TRUNC (t.LKT_ABFAHRT_VON) BETWEEN '24.01.2014' AND '24.02.2014'
Eso, te comento, hace que oracle descarte el índice, y realice un full table scan.
Lo que te conviene en ese caso es hacer que las fechas del BETWEEN se tomen como DATETIME:
Código SQL:
Ver original
  1. SELECT *
  2.     FROM DISPO2.TB_LKW_TOUR t,
  3.          DISPO2.VI_AUFTRAG_AUF_LKW a
  4.    WHERE     T.LKT_ID = A.LKT_ID
  5.          AND T.MND_NR = 1
  6.          AND T.NDL_NR = 117
  7.          AND t.LKT_ABFAHRT_VON BETWEEN TO_DATE('24/01/2014 00:00:00', 'dd/mm/yyyy hh24:mi:ss')  AND TO_DATE('24/01/2014 23:59:59', 'dd/mm/yyyy hh24:mi:ss')
Por engorroso que parezca, eso es más eficiente.

Ten en cuenta que siempre que aplicas una función sobre un campo que está indexado, el índice se descarta, porque Oracle no puede, a priori, saber si la función no suprime las características de las claves.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)