2009-05-14 32 views

Respuesta

9

La diferencia principal es que top solo afectará a la consulta que está ejecutando mientras set rowcount persistirá con la conexión y se aplicará a todas las consultas ejecutadas dentro de esa conexión.

+0

Este hecho es un sollozo complicado, tema. ¿Hay alguna forma de configurar el contador de filas, que solo afecta a la consulta actual? – crosenblum

+1

@crosenblum si haces un 'SET ROWCOUNT 0' después de la consulta, deberías estar bien. – travis

4

En las versiones anteriores de SQL Server (2005 y anteriores no estoy seguro acerca de 2008) no se podía utilizar una variable en un comunicado de arriba, así:

declare @rc int 

set @rc=10 

select top @rc * from myTable --Wont work 

set rowcount @rc 
select * from myTable --Will work 
4

2008 y anterior permite

declare @rc int 

set @rc=10000 

select top (@rc) * from myTable --will now work 

pero sólo si se utiliza() esto puede ser útil para utilizar las sugerencias como:

OPTION (OPTIMIZE FOR (@rc= 15)) 

al final que permite seleccionar olvidarlo todo, pero la optimización de un caso más común