Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/06/2012, 11:35
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Como optimizar un UPDATE a pesar de tener INDICES

hacer un update que tarde poco tiempo esta algo complicado y mas si manejas millones de registros, lo que podrias hacer y es como una sugerencia es que pongas en una tabla temporal los registros a actualiza(no todos los datos solo los id's) y que selecciones primero digamos el top 10 percent de esa tabla y lo actualices en tu tabla maestra, despues que elimines ese top 10 percent de la tabla temporal y que repitas el proceso varias veces......algo asi:


Código SQL:
Ver original
  1. UPDATE tabla A
  2. SET campo1=campo2
  3. WHERE tabla A.id EXISTS (SELECT top 10 percent id FROM tabla B)
  4.  
  5. DELETE top 10 percent FROM tabla B
  6.  
  7. UPDATE tabla A
  8. SET campo1=campo2
  9. WHERE tabla A.id EXISTS (SELECT top 10 percent id FROM tabla B)
  10.  
  11. DELETE top 10 percent FROM tabla B
  12.  
  13. UPDATE tabla A
  14. SET campo1=campo2
  15. WHERE tabla A.id EXISTS (SELECT top 10 percent id FROM tabla B)
  16.  
  17. DELETE top 10 percent FROM tabla B

y asi sucesivamente, quizas sea mucho codigo pero estas haciendo un proceso grande en varios mini procesos que en teoria tardarian menos :), digo es una idea que aplique en un proceso que tardaba casi 8 horas y ahora nada mas tarda 3 :P jejejejeje.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me