EcommerceDEV. Développement, optimisation et sécurisation des sites de commerce électronique.
arrowAccueil arrow Programmation arrow Base de données arrow MySQL, performance des requêtes SELECT et ordre des jointures
Samedi 5 juil 2008
Nom d'utilisateur     Mot de passe      Conserver       Mot de passe perdu ? 
Menu
Accueil
A propos du site
Carte du site
Moteur de recherche
Nouvelles
Contactez-nous
Evénements
Lettres de nouvelles
- - - - - - -
Analyse
Conception
Optimisation
Programmation
Sécurité
Produits/Services
avr 13 2006
MySQL, performance des requêtes SELECT et ordre des jointures Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 1
FaibleMeilleur 
Programmation - Base de données
Ecrit par Kamal AOUDA   
13-04-2006
MySQL, performance des requêtes SELECT et ordre des jointures

Lorsqu’une requête porte sur plusieurs tables, l’ordre dans lequel ces tables sont parcourues est un facteur qui affecte directement les performances. Par exemple dans la requête infra, il faut parcourir la table customer avant la table order et la table region (le but final étant de réduire au strict minimum le nombre d’enregistrements parcourus).


Pour MySQL la détermination de l’ordre dans lequel les tables doivent être scannées n’est pas aussi simple parce qu’il doit, au préalable, identifier toutes les combinaisons possibles. Cette identification est très pénalisante pour les ressources et consomme plus de temps que l’exécution de la requête elle-même. En fait l’identification des combinaisons possibles peut prendre jusqu'à 29 fois plus de temps qu’il faut pour exécuter la requête .

SELECT customer.name, order.date_placed, region.name
FROM customer, order, region
WHERE order.customer_id = customer.id
AND customer.region_id = region.id
AND customer.name = 'Rajaz Camel'

Cela dit, pour réduire le délai d’exécution des requêtes portant sur plusieurs tables, on peut procéder de la manière suivante:

* Utiliser l’utilitaire EXPLAIN pour déterminer l’ordre dans lequel MySQL scanne les tables.

* Si cet ordre n’est pas efficient, le forcer à scanner les tables dans un ordre précis en utilisant l’instruction STRAIGHT_JOIN (par exemple si on exécute la requête SELECT * FROM table1 STRAIGHT_JOIN table2 WHERE ... on force MySQL à scanner la table1 avant la table 2).
 

< Précédent   Suivant >
Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional
New Page 2

Livre à l'intention des développeurs déjà familiarisés avec PHP et MySQL. Il contient plusieurs exemples qui montrent comment développer des applications de commerce électronique de qualité. Outre les questions relatives au design et à la programmation, ce livre donne des conseils pour augmenter les ventes en ligne et diminuer le coût de traitement des commandes grâce aux services web XML.

 

Lien sur le site d'Apress.

 

Références

 

http://www.apress.com/book/bookDisplay.html?bID=356

Cristian Darie, Mihai Bucica , ISBN: 1-59059-392-8 , 568 pp., Nov 2004

Moteur de recherche
Recommander ce site
Collaboration
Téléchargements
Derniers événements
Aucun événement
Sondages

Les bases de données objet conviennent-elles aux applications e-commerce ?

  
Blogs Ecommerce
Blog de capitaine commerce
top

Ce site a été crée avec le CMS Mambo. Un logiciel gratuit disponible sous licence GPL.

Copyright Ecommerce DEV 2006.

Hosted by SiteGround