Evitaría usar SELECT *
. Especifique las columnas que realmente desea, aunque pueden ser todas.
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
Paginación eficiente a través de grandes conjuntos de resultados en SQL Server 2000
Un método más eficiente para paginar grandes conjuntos de resultados