Aller au contenu Aller au menu
Vous êtes ici : Développement > MySQL > 3) Optimiser les requêtes SQL > a) Utiliser la richesse du langage SQL
Langue : fr

a) Utiliser la richesse du langage SQL

Le langage SQL contient toutes les structures de contrôle existant dans n'importe quel langage de programmation. Il convient donc d'utiliser les IF, ELSE, CONCAT, MAX, et consorts. Pourquoi ?

  • le code gagne en compacité (la recherche d'anomalie sera plus facile, le développement d'évolutions en préservant l'existant, c'est-à-dire la non-régression de l'application, également)
  • l'application gagne en centralisation de la logique métier (toutes les opérations sont directement lisibles en un seul endroit, plutôt qu'éparpillées un peu partout dans l'application)
  • et donc, en homogénéisation des traitements (quelle que soit la méthode PHP appelant cette requête, les données retournées sont toujours les mêmes, ce qui garantit qu'en tout point de l'application, les données sont identiques)

Cependant comme d'ordinaire, le pragmatisme est de rigueur. Si vous devez remplacer les enregistrements vides d'un champ par une chaîne de 4 Ko, ne le faites pas en SQL, car cette chaîne sera générée (et donc dupliquée) pour chaque enregistrement avant un coûteux retour par réseau. Attention également à prendre en compte les problématiques propres à votre architecture : si la répartition de puissance entre serveur de bases de données et serveur applicatif est en faveur de ce dernier, il peut être plus avantageux pour les performances de faire travailler le moins possible le serveur de bases de données (cas d'un serveur Apache dédié couplé à un serveur MySQL mutualisé, par exemple).

  1. MySQL
    1. 1) Bien concevoir la base de données
      1. a) Choix des tables – Normalisation des données
      2. b) Choix et typage des champs
    2. 2) Indexer les données
      1. a) L'index : un marque-page dans la base de données
      2. b) Une forte cardinalité pour un bon index
      3. c) Une utilisation récurrente pour un bon index
      4. d) Gare aux contre-optimisations
    3. 3) Optimiser les requêtes SQL
      1. a) Utiliser la richesse du langage SQL
      2. b) Optimiser les jointures
      3. c) Mettre à profit une bonne indexation
    4. 4) Corriger les requêtes lentes
      1. a) L'optimisation de requête par EXPLAIN
      2. b) L'analyse post-mortem
    5. 5) Le serveur MySQL – maintenance et backup
      1. a) Minimiser l'impact des opérations de maintenance
      2. b) Sauvegarde et restauration des bases de données
      3. c) Maintenance des tables