Jump to content

Recommended Posts

Bonjour,

la requête suivante posait problème sur notre serveur de prod, avec une version 1.2.5 de PrestaShop :

SELECT u.id_customer, u.firstname, u.lastname,
c.ip_address, c.date_add, c.http_referer, c.id_connections,
c.id_guest, ct.id_cart FROM `ps_connections` c
LEFT JOIN `ps_connections_page` cp ON c.id_connections = cp.id_connections
INNER JOIN `ps_guest` g ON c.id_guest = g.id_guest
INNER JOIN `ps_customer` u ON u.id_customer = g.id_customer
INNER JOIN `ps_page` p ON p.id_page = cp.id_page LEFT JOIN `ps_cart` ct ON ct.id_guest = c.id_guest
WHERE (c.`date_add` BETWEEN '2010-01-01 00:00:00' AND '2010-12-31 23:59:59' )
GROUP BY c.id_connections
ORDER BY c.date_add DESC


J’ai identifié la provenance de cette requête. Il s’agit du fichier « modules/statstrackvisits/statstrackvisits.php » et de la méthode « getCustomers ».
Ceci est utilisé dans l’affichage des statistiques au sein du BackOffice de l’outil….on sait à quel point les clients aiment les regarder ses stats…

Bref, après un « EXPLAIN » de cette requête sur notre recette, j’ai vu qu’il manquait deux index :
- un sur le « id_connections » de la table « ps_connections_page »
- et un sur le « id_guest » de la table « ps_cart »

Autant le premier n’est pas grave, autant le second concerne la table des paniers du site qui contient plus de 4000 enregistrements. Et aucun index n’était utilisé pour cette table.

En clair les jointures de cette requête parcourait systématiquement les 4000 lignes avant de trouver la bonne, cela sur 5 jointures et une année complète….c’est énorme.

J'ai donc rajouté les 2 index dans notre base et tout est rentré dans l'ordre.

Je n'ai pas vérifié sur la dernière version si ces index étaient présents, mais il faudrait soit les y mettre, soit modifier le module pour qu'il ajoute ces index s'ils manquent....

Je m'en vais l'indiquer sur ce forum également : http://www.prestashop.com/forums/viewthread/23729/

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More