gcann Posted October 5, 2010 Share Posted October 5, 2010 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_connectionsORDER 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/ Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now