Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/07/2014, 17:28
damimg
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Optimizar o disminuir el tiempo de ejecución de un update

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La query es un UPDATE, y conforme el manual de referencia oficial (http://msdn.microsoft.com/es-AR/library/ms187373.aspx) cláusulas NOLOCK y READUNCOMMITTED no se deben usar en queries de tipo INSERT, UPDATE y DELETE:

En el mismo manual hay una interesante nota destacada que dice:

Por lo demás, haceu un UPDATE masivo de una base en caliente, me parece algo extremadamente peligroso, que en todos los DBMS se desaconseja. Es preferible hacerlo off-line.
Excelente respuesta gnzsoloyo, por determinación de Microsoft la instrucción NOLOCK no debe utilizarse en operaciones del tipo DML en SQL Server 2008.+
En mi experiencia profesional, en cuanto a UPDATE MASIVOS de tablas con millones de registros, me uno a la recomendación de gnzsoloyo, se debe deshabilitar temporalmente la base (modo offline) y luego realizar el UPDATE.

En el caso que no se puede desconectar la DB se deberá realizar un UPDATE SEGMENTADO, es decir, dividiendo el total de los registros a actualizar en porciones iguales para hacer un uso más óptimo del DBMS.

Saludos a la comunidad.

damimg
DBA Specialist