Quelle est la meilleure façon de paginer les résultats dans SQL Server

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Quelle est la meilleure façon de paginer les résultats dans SQL Server

Message par ForumBot »

Quelle est la meilleure façon de paginer les résultats dans SQL Server

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Quelle est la meilleure façon de paginer les résultats dans SQL Server

Message par ayi »

Obtenir le nombre total de résultats et paginer sont deux opérations différentes. Pour les besoins de cet exemple, supposons que la requête que vous traitez est


SELECT * FROM Orders WHERE OrderDate >= '1980-01-01' ORDER BY OrderDate


Dans ce cas, vous détermineriez le nombre total de résultats en utilisant :


SELECT COUNT(*) FROM Orders WHERE OrderDate >= '1980-01-01'


…ce qui peut sembler inefficace, mais est en réalité assez performant, à condition que tous les index, etc., soient correctement configurés.


Ensuite, pour obtenir les résultats réels de manière paginée, la requête suivante serait la plus efficace :


SELECT  *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY OrderDate ) AS RowNum, *
FROM Orders
WHERE OrderDate >= '1980-01-01'
) AS RowConstrainedResult
WHERE RowNum >= 1
AND RowNum < 20
ORDER BY RowNum


Cela renverra les lignes 1 à 19 de la requête originale. L’avantage ici, notamment pour les applications web, est que vous n’avez pas besoin de conserver d’état, à l’exception des numéros de lignes à renvoyer.

Répondre

Revenir à « SQL Server »