¿Cuál es la diferencia entreSQL recuento de filas vs Top
Set Rowcount X
Y
Select Top X *
From Z
en TSQL?
¿Cuál es la diferencia entreSQL recuento de filas vs Top
Set Rowcount X
Y
Select Top X *
From Z
en TSQL?
Top puede hacer algunas cosas más para usted. Por un lado, puede especificar un porcentaje, en lugar de un número entero. También puede manejar situaciones en las que se producen vínculos en los valores de columna.
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.
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
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
Este hecho es un sollozo complicado, tema. ¿Hay alguna forma de configurar el contador de filas, que solo afecta a la consulta actual? – crosenblum
@crosenblum si haces un 'SET ROWCOUNT 0' después de la consulta, deberías estar bien. – travis