Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Existe optimización para Update??

Estas en el tema de Existe optimización para Update?? en el foro de SQL Server en Foros del Web. Hola... tengo un SP que realiza un update @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original UPDATE TABLA         SET campo1 = dbo . ...
  #1 (permalink)  
Antiguo 13/01/2016, 09:49
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Existe optimización para Update??

Hola... tengo un SP que realiza un update

Código SQL:
Ver original
  1. UPDATE TABLA
  2.         SET campo1 = dbo.[GET_VALUF_AAAAMMDD](FECPAG),
  3.             campo2= val1/dbo.[GET_VALUF_AAAAMMDD](FECPAG),
  4.             campo3= val2/dbo.[GET_VALUF_AAAAMMDD](FECPAG);

Son unos 400.000 registros.. demora casi 30 min... hay forma de optimizar este proceso?? Poder hacerlo más rápido?
  #2 (permalink)  
Antiguo 13/01/2016, 09:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Existe optimización para Update??

Estas usando una funcion en el update y creo q eso es lo q causa un poco de lentitud, ademas no mencionas indices de tu tabla ni cual es el plan de ejecucion q te genera esa consulta.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/01/2016, 10:09
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Existe optimización para Update??

La tabla no tiene ningún indice utilizado x aquel update, estaba leyendo en el foro que se puede usar top percent, pero no se si se puede hacer por el 100% de la tabla y a la vez por lotes
  #4 (permalink)  
Antiguo 13/01/2016, 10:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Existe optimización para Update??

Y cual es tu plan de ejecucion??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 13/01/2016, 12:00
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Existe optimización para Update??

Esto??

  #6 (permalink)  
Antiguo 13/01/2016, 12:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Existe optimización para Update??

¿Que version y edicion de SQL Server manejas?
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 13/01/2016, 12:14
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Existe optimización para Update??

Microsoft SQL Server 2012 - 11.0.5532.0 (X64)
  #8 (permalink)  
Antiguo 13/01/2016, 12:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Existe optimización para Update??

Cita:
Iniciado por ZedGe1505 Ver Mensaje
Esto??

Ese plan de consulta es bastante malo, por decirlo simplemente...
Toda query que haga un TABLE SCAN es un espanto.

Uno de los problemas que enfrentas es lo que ya te dijeron: Estas usando funciones en cada campo, lo que termina conspirando contra la performance del UPDATE.
Además, siendo un UPDATE masivo, es probable que fuese mejor otro tipo de estrategias, y no algo como lo que pones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 13/01/2016, 12:24
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Existe optimización para Update??

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ese plan de consulta es bastante malo, por decirlo simplemente...
Toda query que haga un TABLE SCAN es un espanto.

Uno de los problemas que enfrentas es lo que ya te dijeron: Estas usando funciones en cada campo, lo que termina conspirando contra la performance del UPDATE.
Además, siendo un UPDATE masivo, es probable que fuese mejor otro tipo de estrategias, y no algo como lo que pones.

Es que por como tienen la BD no tengo otra opción para evitar esa función y menos el scan ya que debo actualizar todo los datos :/
  #10 (permalink)  
Antiguo 13/01/2016, 12:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Existe optimización para Update??

Sin que nos digas a qué te refieres con "por como tienen la BD", es dificil saber si realmente no hay otra posibilidad...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 13/01/2016, 12:29
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Existe optimización para Update??

Me refiero a que existe una TABLA con valores UF y que según la fecha voy a buscar ese valor...

El Update hace una conversión de monedas.... y la función (dbo.[GET_VALUF_AAAAMMDD]) es un select * from tabla where fecha = FECPAG
  #12 (permalink)  
Antiguo 13/01/2016, 12:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Existe optimización para Update??

Ese es todo el plan de ejecucion? Porq ahi nada mas es un 17% del proceso(segun el plan) ahora sabes q es un table scan?? Y porq jo primero obtienes los valores de las fechas de pago en una tabla/variable/cte o lo q mejor se acomode y con esos valores ya realizas el update? Top percent en este caso no te ayudaria
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 13/01/2016, 12:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Existe optimización para Update??

Ok, y pregunto, si la fecha de la tabla donde aplicas el UPDATE se corresponde con un único registro de la segunda para la fecha, ¿no te sirve un esquema con JOIN? algo del tipo:
Código SQL:
Ver original
  1. UPDATE ...
  2. SET ...
  3. FROM tabla1, tabla2
  4. WHERE <...>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/01/2016 a las 13:47
  #14 (permalink)  
Antiguo 13/01/2016, 13:11
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Existe optimización para Update??

Primero crearé un indice en ambas tablas y luego realizaré el JOIN les comento como va y los tiempos




EDIT:



Lo dejé así


Código SQL:
Ver original
  1. UPDATE TABLA1
  2.     SET
  3.         campo1= t2.VALOR,
  4.         campo2= val1/t2.VALOR,
  5.         campo3= val2/t2.VALOR
  6.     FROM
  7.         tabla1 t1
  8.         INNER JOIN
  9.         tabla2 t2
  10.     ON  t2.AAAAMMDDD = t1.FECPAG

Bajó a más de la mitad el tiempo, gracias

Última edición por ZedGe1505; 13/01/2016 a las 13:28
  #15 (permalink)  
Antiguo 13/01/2016, 13:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Existe optimización para Update??



A veces la mejora de ciertas cosas pasa más por el SQL puro, que por el uso de funciones.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: optimización, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:50.