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
c'est la requête que j'utilise pour la pagination. utilisez-le et vous obtiendrez les 10 enregistrements souhaités en 4-5 secondes. Je reçois 10 enregistrements en 3 secondes et le nombre total d'enregistrements dans ma base de données est de 10 millions, n'utilisez pas le top 10, il n'apportera que les mêmes 10 enregistrements à chaque fois. dans mon cas, je maintiens la taille de la page et le numéro de ligne de départ (@FromRow) dans la session et je transmets ces deux valeurs à la procédure stockée ci-dessous et j'obtiens le résultat. De plus, si vous utilisez SQL 2012, vous voudrez peut-être utiliser OFFSET et Récupérer les 10 prochaines lignes. recherchez sur google le mot-clé OFFSET et vous verrez le résultat souhaité en haut.
merci