Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle est la meilleure façon d'effectuer la pagination sur SQL Server ?

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