ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE]
@FromRow int = 1000000,
@PgSize int = 10
AS
BEGIN
;WITH RecordsRN AS
(
select ID, colValue, ROW_NUMBER() over(order by colvalue) as Num from tblTest
)
SELECT ID Value, colValue Text FROM RecordsRN WHERE Num between @FromRow AND (@[email protected])
END
esa es la consulta que estoy usando para la paginación. úselo y obtendrá los 10 registros deseados en 4-5 segundos. Obtengo 10 registros en 3 segundos y el total de registros en mi base de datos es de 10 millones, no use los 10 principales, solo traerá los mismos 10 registros cada vez. en mi caso, mantengo el tamaño de página y el número de fila inicial (@FromRow) en la sesión y paso estos dos valores al siguiente procedimiento almacenado y obtengo el resultado. Además, si está usando SQL 2012, es posible que desee usar OFFSET y Obtener las próximas 10 filas. busque en google la palabra clave OFFSET y verá el resultado deseado en la parte superior.
gracias