RSS
people

Optimisation MySQL - Utilisation des alias de table

Nous allons aujourd’hui traiter d’optimisation MySQL, en nous penchant sur le cas des alias de table. Ceux-ci ont-ils un réel impact sur les performances de nos requêtes ? C’est ce que nous allons voir dans ce billet.

Lorsque vous écrivez une requête SQL, il est possible de spécifier un alias au nom des tables que vous utilisez. Cela permet d’utiliser plusieurs champs portant le même nom dans des tables différentes tout en réduisant le nombre de caractères de votre requête. Un exemple sera bien plus parlant qu’un long discours :

SELECT
     M.firstName,
     M.lastName,
     C.name
FROM
     members M
     LEFT OUTER JOIN countries C ON ( C.id = M.countryId );

Cependant, on peut se demander si ces alias ont un impact au niveau des performances de ces requêtes. On pourrait supposer que les alias de tables sont favorables aux performances. Mais qu’en est-il réellement ?

On spécifie explicitement au serveur le nom des tables dans lesquelles il doit rechercher le champ spécifié. Ainsi, il n’a pas à le déterminer lui-même, en parcourant la structure de toutes les tables présentes dans la requête. Ce qui pourrait nous laisser croire que l’utilisation des alias optimise nos requêtes. Vérifions donc notre théorie.

Pour ce faire, effectuons quelques tests d’exécution de requête sur une et deux tables, en faisant varier la présence d’alias et le moteur de bases de données. On obtient les résultats suivants (chiffre moyen basé sur l’exécution de 10.000 requêtes sur le même serveur de développement) :

InnoDB :

Une table, sans alias : 4.358 ms
Une table, avec alias : 4.382 ms
Deux tables, sans alias : 5.485 ms
Deux tables, avec alias : 5.421 ms

MyISAM :

Une table, sans alias : 4.488 ms
Une table, avec alias : 4.449 ms
Deux tables, sans alias : 5.376 ms
Deux tables, avec alias : 5.406 ms

Ainsi, comme nous pouvons le constater, les alias de tables n’ont aucun impact sur les performances. Cependant, ils permettent d’accroître grandement la lisibilité de vos requêtes, ce qui au final, accroît tout de même votre productivité en tant que développeur. La mort des alias n’est donc pas encore pour aujourd’hui. ;)

Diffusez cet article :
  • Facebook
  • Google
  • Fleck
  • Live
  • Scoopeo
  • Taggly
  • Technorati
  • TwitThis
  • Wikio FR
  • YahooMyWeb

Réagir