AccueilClientsExpertisesBlogOpen SourceContact

Bonne pratique

Optimiser les requêtes aux bases de données

Ce que dit le référentiel

La base de données est en général un composant essentiel des applications et les requêtes effectuées pour récupérer et enregistrer des données sont nombreuses ; exécutées fréquemment, elles ont une influence importante sur la consommation de ressources de la solution.

Dans cette optique il est important de prêter attention à ces requêtes et de valider, au moins pour celles qui coûtent le plus, qu'elles sont bien optimisées.

Les pistes classiques d'optimisation sont :

  • Ramener moins de données et se limiter au nécessaire. Par exemple, pour les bases relationnelles, la clause LIMIT limite le nombre de lignes du résultat. Quand c'est possible, l'utiliser permet de réduire la quantité de données transférées. Le gain en performance sera d’autant plus important si les enregistrements contiennent un grand nombre de champs volumineux.
  • N'utiliser que les champs qui sont nécessaires dans les tables ou documents utilisés. Afin de ne pas transférer inutilement des données qui ne seront pas utilisées, et de ne pas utiliser des ressources du serveur de base de données et du serveur d'application pour les manipuler.
  • Ajouter des index sur les champs utilisés comme clefs. Ceux-ci dépendent de votre modèle. Leur ajout peut complètement changer les performances d'une requête. Attention, ajouter un index rend l'écriture plus longue, car il faut le mettre à jour pour les documents ajoutés, modifiés ou supprimés. Il faut le faire si on a plus de lectures que d'écritures ou si la lecture est particulièrement couteuse.
  • Utiliser les outils du système de gestion de base de données permettant d'analyser les requêtes pour identifier les points d'amélioration, EXPLAIN par exemple pour un SGBDR.
  • Conserver en cache le résultat des requêtes les plus couteuses, ainsi que les données qui changent peu ou jamais (données de référence).
  • Éventuellement, modifier le modèle de données pour pouvoir accéder plus facilement aux informations sans jointures (dénormalisation)

Le "Référentiel d'écoconception web (REW)" est publié par GreenIT.fr dans le cadre des travaux du Collectif conception numérique responsable selon les termes de la licence Creative Commons Attribution.

Plus d'informations sur collectif.greenit.fr et ecoconceptionweb.com.

Notre avis

Nous assurons l'optimisation des requêtes SQL grâce à des jointures bien pensées. Nous structurons les requêtes de manière à appliquer des filtres avant les jointures. Cela minimise le volume de données manipulées en amont.

Nous utilisons des index sur les champs utilisés fréquemment pour les recherches et les filtres. Cela améliore les performances de lecture et réduit la consommation des ressources. Nous prêtons attention à l'ordre des opérations dans les requêtes pour maximiser l'efficacité des jointures et filtrer les données dès le début du processus.

Règle de validation

Le nombre de requêtes peu performantes identifiées non optimisées doit être inférieur ou égal à 0

Ressources économisées

Processeur
Mémoire vive
Réseau
Bonne pratique précédente
Précédent
Bonne pratique suivante
Suivant
18 avenue Parmentier
75011 Paris
+33 1 43 57 39 11
hello@premieroctet.com

Suivez nos aventures

GitHub
X (Twitter)
Flux RSS

Naviguez à vue