Pregunta

¿Hay una razón para usar una de estas instrucciones UPDATE sobre el otro en cuanto a rendimiento?

 UPDATE myTable
 SET    fieldx = 1
 FROM   myTable AS mt
      , myView AS mv
 WHERE  mt.id = mv.id


 UPDATE myTable
 SET    fieldx = 1
 WHERE  id IN ( SELECT id
                     FROM   myView )
¿Fue útil?

Solución

probablemente van a salir con el mismo plan de ejecución, es decir, no hay ninguna diferencia. Para confirmar, sólo tratar cada uno en SSMS con la opción "Incluir plan de ejecución" encendido.

De hecho, el que me gustaría ir a es:

UPDATE mt
SET mt.fieldx = 1
FROM myTable mt
    JOIN myView mv ON mt.ID = mv.ID

Me gusta mucho más esta sintaxis. Sin embargo, también saldrá con el mismo plan de ejecución.

Para demostrar esto, me encontré con una prueba con cada variante de la instrucción UPDATE. A medida que la ejecución de los planes a continuación muestran, salieron todos de la misma - todos realizan la misma:
alt texto http://img707.imageshack.us/img707/7801/60422461.png


alt texto http://img683.imageshack.us/img683/7874/41210682.png


alt texto http://img708.imageshack.us/img708/5020/20506532.png

Otros consejos

Si bien esto no habla de rendimiento, me gusta el primer ejemplo mejor manera que pude veterinario que sea más fácil sin necesidad de cambiar la estructura subyacente del código. Observe dónde y lo que he puesto en los comentarios:

UPDATE myTable 
SET    fieldx = 1
--SELECT *
FROM   myTable AS mt 
      , myView AS mv 
WHERE  mt.id = mv.id
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top