Qu’est-ce que la pagination ?
La pagination est le processus de division de données volumineuses en ensembles de données plus petits dans des pages distinctes. Il est largement utilisé dans les applications Web.
Comment fonctionne la pagination dans MS SQL Server ?
Dans MS SQL Server, nous pouvons réaliser la fonctionnalité de pagination en utilisant OFFSET
et FETCH
clauses avec ORDER BY
dans un SELECT
déclaration.
OFFSET
: représente le nombre de lignes à ignorer du jeu de résultats. Il doit être égal à 0 ou supérieur à 0.FETCH
: Représente le nombre de lignes à afficher dans le résultat.
Points importants à prendre en compte lors de l’utilisation de OFFSET et FETCH :
ORDER BY
est obligatoire pour l’utilisationOFFSET FETCH
Clause.OFFSET
est obligatoire etFETCH
est facultatif.- Les
TOP
clause ne peut pas être utilisée dans leSELECT
déclaration avecOFFSET FETCH
.
Voyons des exemples :
Dans l’exemple ci-dessous, OFFSET 0
et FETCH NEXT 5 ROWS
signifie qu’il ne saute aucune ligne et renvoie les 5 lignes suivantes de l’ensemble de données, dont les 5 premières lignes de l’ensemble de données.
SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET 0 ROWS
FETCH NEXT 5 ROWS ONLY
Dans l’exemple ci-dessous, OFFSET 3
et FETCH NEXT 5 ROWS
signifie sauter les 3 premières lignes et retourner les 5 lignes suivantes dans l’ensemble de données.
SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET 3 ROWS
FETCH NEXT 5 ROWS ONLY
PageNumber
RowsOfPage
PageNumber
— Représente le numéro de pageRowsOfPage
— Représente le nombre de lignes sur une page
Maintenant, pour calculer le nombre de lignes à sauter lorsque nous passons à la page suivante, le (@PageNumber-1) * @RowsOfPage
la formule est utilisée dans le OFFSET
, et le nombre de lignes sera renvoyé dans FETCH
.
Ici, PageNumber
est 2 et RowsOfPage
est 5, ce qui signifie renvoyer l’ensemble de données pour la page numéro 2.
DECLARE @PageNumber AS INT
,@RowsOfPage AS INT
SET @PageNumber=2
SET @RowsOfPage=5
SELECT EmployeeKey,FirstName,LastName,Title,EmailAddress,
Phone,EmergencyContactName,DepartmentName
FROM dbo.DimEmployee WITH(NOLOCK)
ORDER BY EmployeeKey
OFFSET (@PageNumber-1) * @RowsOfPage ROWS
FETCH NEXT @RowsOfPage ROWS ONLY
Conclusion
Dans l’application temps réel, cette logique complète peut être écrite dans la procédure stockée qui est appelée en cliquant sur le bouton « Suivant » ou numéro de page dans l’application web pour afficher l’ensemble des enregistrements sur la page.