• 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

  • Annonces
    • Par région
    • Par métier
    • Par technologies
    • Par entreprise
    • Fiche métiers
  • Entreprises
  • News
  • Se connecter
  • Déposer CV
  • Recruteur
    • Connexion Recruteurs
    • Employeurs
    • Trouvez des CVs
    • Postez des offres
  • Categories du Blog
    • Développement
    • Réseaux et Systèmes
    • Digital
    • E-commerce
    • Marché de l’emploi
    • Conseils
    • Evénements
    • Design
    • Marketing
    • Interviews
    • —-
  • Annonces
    • Toutes nos offres d’emploi
    • par région
    • par métier
    • par technologies
    • par sociétés
    • Par Industries
    • Fiches Métiers
  • Entreprises
  • Tests
  • offres recommandées
  • Se connecter
  • Déposez CV
  • Employeurs
    • Connexion recruteurs
    • Employeurs
    • Trouvez des CVs
    • Postez des offres
  • Développement
  • Réseaux et Systèmes
  • Digital
  • E-commerce
  • Marché de l’emploi
  • Conseils
  • Evénements
  • Design
bases de données et tableaux de pagination sql

Pagination SQL : problèmes et solutions

08/07/2022 par Team LesLeudis

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 LesLeudis

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Sidebar

Rechercher

Nos Meilleurs Articles

Bannière commandes Linux

Les commandes Linux de base à connaître absolument

Les métiers les plus demandés de l'informatique

Les métiers de l’informatique les plus demandés en 2023

Bannière Développement de jeu vidéo

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

Bannière Securité PHP

Découvrez 9 importantes failles de sécurité de PHP ainsi que les moyens de les corriger

Bannière Langages de Programmation

Langages de programmation les mieux payés en 2023 : Top 10

Gatsby JS

JAMstack avec Gatsby, Netlify et Netlify CMS

Modeles React JS

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

les couches ou layers de la blockchain

Les layers de blockchain (L0, L1, L2, L3)

bannière Ingénieur développement

Ingénieur développement

un développeur de crypto devant l'ordinateur et le globe terrestre montrant différents symboles de crypto-monnaies

Le rapport sur l’activité des développeurs crypto

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

MOA MOE : Quelles sont les différences ?

ordinateur portable pro montrant code de programmation, services cloud et des charts statistiques

Le développement web et les développeurs web

Categories

  • Blockchain (11)
  • Conseils (52)
  • Design (39)
  • Développement (150)
  • Digital (305)
  • Divers (6)
  • E-commerce (12)
  • Evénements (25)
  • Fiche métier (1)
  • Formation (9)
  • Interviews (36)
  • Marché de l'emploi (60)
  • Marketing (127)
  • Méthodologie (9)
  • Réseaux et Systèmes (27)
  • Web (149)

Nos Categories

Blockchain

Conseils

Méthodologies

Design

Développement 

Digital

E-commerce

Evénements

Formation

interview

Marché de l’emploi

Marketing

Réseaux et Systèmes

Website

Candidats

Employment by region

Employment by profession

Emploi par technologie

Emploi par type de contrat

Tous les emplois

Fiches métiers informatiques

Nos Services

S’inscrire

Annonces

Magazine

Salon LesJeudis

Support

Nous contacter

Vous êtes recruteur ?

A Propos

Conditions générales d’utilisation

Politique de confidentialité

Droit d’accès aux données 

Personnelles

Social

Facebook

Twitter

Linkedi

Les Jeudis

© 2021 Groupe Les Jeudis