Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/04/2014, 07:47
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Actualizar mas de 1 millon de registros

Buen día chely11

Haciendo uso de bulk colect o forall efectivamente mejora mucho el performance de la operación.
Pero mirando tu sentencia, tiene mucho que ver la consulta que utilizas al interior del UPDATE.

Código SQL:
Ver original
  1. SELECT DIM_TIME.PK_TimeKey FROM DIM_TIME WHERE
  2. CAST(tabla_P.FECHA AS TIMESTAMP)>=DIM_TIME.FullDateAlternateKey AND CAST(tabla_p.FECHA AS TIMESTAMP) <
  3. (DIM_TIME.FullDateAlternateKey + 30/(24*60))

Yo empezaría analizando el plan de ejecución de esta consulta y mirando cuanto tarda normalmente su ejecución. Hipoteticamente si la consulta tarda tan solo 2 segundos, si mutiplicas esto por 1500000, vas a tener un proceso que podría tardar 3000000 de segundos equivalente a algo mas de 34 días.

Bajo este escenario, ni utilizando bulk collect ni forall vas a tener mejorias muy relevantes.

Si gustas, puedes publicar aca el plan de ejecución de la consulta y adicional el plan de ejecución del UPDATE completo

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming