Un jour ou l'autre, on a tous besoin de
faire une pagination sur les résultats qu'on obtient, spécialement
lorsqu'on obtient une grande quantité de données et qu'on veut
seulement en afficher une partie pour obtenir une interface qui
répond plus rapidement à l'utilisateur. Imagine seulement si, à
chaque requête effectuée sur Google, on obtient l'ensemble des
résultats qui correspond à nos critères de recherche. Le temps
pour traiter les données et les transmettre sur le réseau
prendraient un temps fou qu'il serait impensable de penser que
l'utilisateur attendrait tout ce temps pour ne cliquer que sur l'un
des premiers résultat.
Avec l'arrivée de SQL Server 2005, on
a vu l'apparition de la fonction ROW_NUMBER qui nous permettait
d'identifier les rangées de façon unique et ainsi pouvoir les
filtrer selon leur position.
Prenons par exemple le cas d'un bottin
d'un entreprise. La pagination faites dans la requête pour retourner
seulement un sous-ensemble du bottin pouvait ressembler à quelque
chose comme ceci pour la troisième page du bottin.
Avec l'arrivé de SQL Server 2012, la
pagination des données s'est améliorer et il ne suffit plus que de
spécifier l'OFFSET du premier enregistrement ainsi que le nombre
d'enregistrements à retourner et le tour est joué.
L'instruction OFFSET indique le nombre
d'enregistrement à ignorer avant de retourner le premier
enregistrement et l'instruction FETCH NEXT indique le nombre
d'enregistrement à retourner. Les valeurs qu'on y indique peuvent
être soit des valeurs fixes, soit des variables, comme montré précédemment, ou des requêtes SQL
scalaires.
Références:
Aucun commentaire:
Publier un commentaire