Eu evitaria usar
SELECT *
. Especifique as colunas que você realmente deseja, mesmo que sejam todas elas. SQL Server 2005+
SELECT col1, col2
FROM (
SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum
FROM MyTable
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow
SQL Server 2000
Paginação eficiente por meio de grandes conjuntos de resultados no SQL Server 2000
Um método mais eficiente para paginar por meio de grandes conjuntos de resultados