Quelquefois, vous n'avez pas besoin de toutes les lignes d'une requête
SQL. Seules les premières lignes vous intéressent, par exemple les dix
premières. Dans ce cas, il est fréquent de permettre aux utilisateurs de
naviguer parmi les anciens messages, soit en utilisant de la pagination
traditionnelle, soit en utilisant une variante plus moderne de parcours
infini. Néanmoins, les requêtes SQL utilisées pour cette fonction peuvent
causer de sérieux problèmes de performances si tous les
messages doivent être triés pour trouver les plus récents. Du coup, un order by
en pipeline est une
optimisation très puissante pour ce type de requêtes.
Utiliser un order by
en pipeline
permet de ne pas avoir à faire le tri du résultat, mais cela permet surtout
de renvoyer les premiers résultats sans avoir à lire et à trier toutes les
lignes. Autrement dit, un order by
en pipeline a un coût
de démarrage très bas. Du coup, il est possible d'annuler l'exécution après
avoir récupéré quelques lignes tout en permettant de récupérer tout si
besoin était.
Ce chapitre démontre comment utiliser un order by
en pipeline dans le but de récupérer efficacement des résultats partiels.
Bien que la syntaxe de ces requêtes varie suivant les bases de données, ces
dernières exécutent les requêtes d'une façon très similaire. Cela démontre
une fois de plus qu'elle ne font pas de miracles.