• Skip to main content
  • Skip to header right navigation
  • Skip to after header navigation
  • Skip to site footer
  • Facebook
  • Twitter
  • Instagram
Lesjeudis

Blog Les Jeudis

Actualité Informatique et Digital

  • Tous les annonces
  • Employeurs
  • Développement
  • Réseaux et Systèmes
  • Digital
  • Marché de l’emploi
  • Conseils
  • Evénements
  • Formation
bases de données et tableaux de pagination sql

Pagination SQL : problèmes et solutions

08/07/2022 par Team LesJeudis

Une pagination en SQL est un processus consistant à récupérer les éléments d’une base de données, puis à les scinder afin de permettre de les parcourir page par page. Cette technique est mise en œuvre aujourd’hui, par les développeurs sql, pour de nombreuses applications Web. Les pages Google sont un exemple.

exemple de pagination sur le moteur de recherche google
Example pagination chez google

Toutefois, il est important de noter que lorsque la base de données comporte un nombre trop important d’éléments, la pagination peut devenir plus complexe. Si une meilleure stratégie n’est pas adoptée, des problèmes de performance peuvent commencer à se présenter.

Comment savoir que vous faites mal la pagination en SQL et quelle solution mettre en place pour éviter de dégrader la qualité de vos services ?

La méthode d’implémentation naïve

La méthode d’implémentation naïve est la solution la plus simple et la plus courante qui est utilisée par les développeurs SQL pour les applications nécessitant une pagination en SQL. Elle consiste généralement en l’utilisation des clauses LIMIT et OFFSET.

Même si la plupart du temps, une pagination avec ces deux clauses fonctionne plutôt bien, il faut savoir qu’à partir d’une quantité de données importantes, cela peut s’avérer être une mauvaise idée.

En effet, les requêtes avec OFFSET par exemple peuvent prendre, en cas de volume élevé de données, beaucoup plus de temps à répondre. Cela crée un réel problème de performance et peut affecter les applications dans leur fonctionnement.

Pour mieux comprendre, prenez comme exemple une table possédant 1 000 000 de produits dans une base SQL.

description d'une table d'objets
Description d’une table d’objets

Lorsque vous lancez la requête de pagination avec OFFSET, vous pourrez constater qu’au fur et à mesure que la valeur de l’OFFSET augmente, les performances se détériorent de plus en plus. Le temps de réponse devient, en effet, plus long.

Exemple de requête de pagination OFFSET
Exemple de requête de pagination OFFSET

Si vous inspectez plus attentivement les résultats de l’optimiseur de base de données pour la requête de pagination formulée, vous remarquerez un détail particulier. En effet, la base de données utilise un système de tri pour ordonner la colonne non indexée et un index pour la partie tenant et id.

Temps de réponse de la pagination pour différentes valeurs OFFSET
Temps de réponse de la pagination pour différentes valeurs OFFSET

La pagination naïve avec un index entraîne un temps de réponse beaucoup plus élevé que la pagination avec l’identifiant unique de la primary key correspondant à la colonne non indexée. Cela permet de tirer 3 principales conclusions :

  1. Il faut savoir que l’utilisation de la clause OFFSET sur une colonne non indexée triée se révèle comme une tâche lourde pour la base de données. Si vous procédez ainsi, sachez que vous faites mal la pagination en SQL ;
  2. Il convient de noter également que, même sur la primary key, l’utilisation de l’OFFSET entraîne une lenteur au fur et à mesure que le volume de la base de données augmente. Cela est dû à la croissance du nombre de lignes qui doivent être parcourues puis supprimées ;
  3. Utiliser OFFSET sur un index avec un grand key_length a plus d’impact sur les temps de réponse qu’avec un petit key_length.

Ces différentes conclusions permettent d’affirmer que vous faites mal la pagination en SQL si vous utilisez OFFSET. Cette manière de procéder entraîne plusieurs inconvénients:

  • En effet, pour un grand volume de données, les dernières pages sont toujours plus difficiles à récupérer. La raison est que le nombre de lignes à charger et à supprimer est élevé.
  • En plus de cela, pour une base de données dont la quantité d’éléments est constamment en croissance, atteindre les premières lignes devient moins facile avec le temps.
  • Le temps de réponse s’allonge et le site ou l’application devient presque inutilisable lorsqu’il y a des milliers d’utilisateurs.

Par ailleurs, un autre inconvénient de la pagination en SQL avec OFFSET, c’est qu’en défilant page par page, si les résultats sont insérés selon le tri de colonnes, certains d’entre eux peuvent être omis pendant que d’autres vont se dupliquer.

Si vous ne pouvez pas réduire la quantité d’informations à parcourir ainsi que le nombre de pages à afficher, la pagination en SQL avec OFFSET reste une très mauvaise idée.

La méthode Seek pour la pagination en SQL 

La meilleure alternative à l’inefficacité des clauses OFFSET et LIMIT en matière de pagination en SQL, est la méthode Seek, également appelée méthode de recherche.

Exemple de requête de recherche de pagination
Exemple de requête de recherche de pagination

L’utilisation de cette méthode permet d’accélérer le processus de pagination. En effet, elle rend le temps de réponse plus court et moins dépendant de la taille de la base de données.

Rechercher le temps de réponse de la requête de pagination
Rechercher le temps de réponse de la requête de pagination

La méthode est très appréciée des développeurs SQL, des développeurs full-stack et des intégrateurs d’applications.

L’application de la méthode Seek permet par ailleurs de relever plusieurs changements essentiels :

  • Une valeur unique est désormais utilisée comme signet pour identifier chaque ligne. C’est cette valeur qui permet d’obtenir la page suivante ;
  • Il est important à chaque fois de déterminer la colonne exacte qui sera utilisée dans le cadre de la pagination afin de relever l’index correspondant ;
  • Pour ordonner les lignes dans des colonnes non-uniques, il est nécessaire de créer des index multi-colonnes en utilisant à cet effet la primary key comme l’une des colonnes. Ensuite, il va falloir adapter la requête afin de naviguer entre les pages en suivant son index.
Index multi-colonnes pour Seek Pagination
Index multi-colonnes pour Seek Pagination

Même si elle rend plus complexe le développement, la méthode de pagination Seek est vraiment très efficace. Elle peut même paginer une table de 100 millions de produits et toutes les pages seront rapides. Il suffit d’avoir les bons index.

Rechercher une requête de pagination d'index multi-colonnes
Rechercher une requête de pagination d’index multi-colonnes

L’autre intérêt majeur de cette méthode est que, lorsqu’elle est mise en application dès le début, elle assure un développement pour l’avenir. En effet, si elle fonctionne bien aujourd’hui avec une base de 10000 lignes, elle fonctionnera toujours bien dans 10 ans lorsque vous aurez 10 millions de lignes.

Pour conclure

Si la performance vous tient réellement à cœur, il faut savoir que vous faites mal la pagination si vous utilisez pour ce faire la clause OFFSET. Cette dernière n’est vraiment pas appropriée pour paginer de très gros volumes de données. Elle n’est recommandée que dans des cas spécifiques.

En présence d’une quantité importante de données, la méthode Seek demeure la solution de pagination en SQL la plus efficace, permettant de maintenir une performance optimale et d’éviter une dégradation du fonctionnement de son application ou de son site Web.

Categorie: Développement, WebTags: SQL

About Team LesJeudis

Lesjeudis est fier de compter sur une équipe multidisciplinaire de professionnels techniques et du marketing. Ensemble, nous couvrons de vastes domaines informatiques et de développement, ainsi que du marketing et du numérique. De Rails à .net, de la conception graphique à l’interface utilisateur et au référencement, vous bénéficierez de nos connaissances et de notre expertise dans chaque article que nous écrivons dans ce blog.

Previous Post:ordinateur portable pro montrant code de programmation, services cloud et des charts statistiquesLe développement web et les développeurs web
Next Post:MOA MOE : Quelles sont les différences ?Des équipes de développeurs écoutent le MOE (Maîtrise d'œuvre) et la maîtrise d’ouvrage (MOA) valide les developpements informatiques menés par la maîtrise d’œuvre

Reader Interactions

Leave a Reply

Your email address will not be published. Required fields are marked *

Sidebar

Déposez CV

Rechercher

Nos meilleurs articles

Bannière Développement de jeu vidéo

Développement de jeux vidéo : Ce qu’il faut savoir

Le processus du RPA (Robotic Process Automation)

La Robotic Process automation, aux frontières du machine learning et de l’IA

Comment bien sécuriser ses transactions sur le web ?

Modeles React JS

10 modèles React gratuits que vous pouvez utiliser pour vos projets

smartphone avec l'appli de CB et les textes: iOS, Android et windows

Développer une application mobile pas à pas

Un programmeur en t-shirt 'code master' fait semblant d'utiliser des langages informatiques sur un panneau interactif

Comment se former au métier de développeur informatique ?

Les erreurs courantes en C# à éviter pour exceller en tant que développeur

Tout savoir sur Angular 18

Scrum

Repenser Scrum pour libérer son potentiel

Prompt Engineering

Le Prompt Engineering : L’art de converser avec l’intelligence artificielle

Rust

Rust – Le nouveau pilier de la Data Science

Le guide ultime du développeur Python

Categories

  • Blockchain (14)
  • Conseils (58)
  • Design (38)
  • Développement (166)
  • Digital (298)
  • Divers (7)
  • E-commerce (13)
  • Evénements (24)
  • Fiche métier (2)
  • Formation (16)
  • Interviews (35)
  • Marché de l'emploi (69)
  • Marketing (127)
  • Méthodologie (10)
  • Réseaux et Systèmes (33)
  • Web (149)

Nos Categories

Blockchain
Conseils
Méthodologies
Design
Développement 
Digital
E-commerce
Evénements
Formation
Interviews
Marché de l’emploi
Marketing
Réseaux et Systèmes
Web

Candidats

Emploi par région
Emploi par métier
Fiche métiers informatiques
Nous contacter
Vous êtes recruteur ?

A Propos

Conditions générales d’utilisation
Politique de confidentialité
Droit d’accès aux données personnelles (cookies)

Social

Facebook
Twitter
Linkedin

Les Jeudis

© Copyright 2023 LesJeudis. Tous droits réservés.