updated top then sentencia que ejemplos sql performance

top - sql get updated row count



TOP versus SET ROWCOUNT (2)

¿Hay alguna diferencia en el rendimiento entre TOP y SET ROWCOUNT o solo se ejecutan de la misma manera?


Sí, funcionalmente son lo mismo. Hasta donde yo sé, no hay diferencias de rendimiento significativas entre los dos.

Una cosa a tener en cuenta es que una vez que haya set rowcount esto continuará durante la vida de la conexión, así que asegúrese de restablecerlo a 0 una vez que haya terminado con la conexión.

EDITAR (publicar el comentario de Martin)

El alcance de SET ROWCOUNT es solo para el procedimiento actual. Esto incluye procedimientos llamados por el procedimiento actual. También incluye SQL dinámico ejecutado a través de EXEC o SP_EXECUTESQL sicne que se consideran ámbitos "secundarios".

Tenga en cuenta que SET ROWCOUNT está en un alcance BEGIN / END, pero se extiende más allá de eso.

create proc test1 as begin begin set rowcount 100 end exec (''select top 101 * from master..spt_values'') end GO exec test1 select top 102 * from master..spt_values

Resultado = 100 filas, luego 102 filas


Una nota más sobre el rendimiento, de acuerdo con BOL:

Como parte de una instrucción SELECT, el optimizador de consultas puede considerar el valor de la expresión en las cláusulas TOP o FETCH durante la optimización de la consulta. Como SET ROWCOUNT se usa fuera de una instrucción que ejecuta una consulta, su valor no se puede considerar en un plan de consulta.

Artículo sobre BOL

Lo que significa que podría haber una diferencia de rendimiento en estos.