|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : août 2009 Messages : 88 ![]() |
Bonjour, cette requete genere un temps d'attente effrayante pour mon site web. Pourriez vous m'aider a l'optimiser ?
Code :
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Bonjour,
Votre group by est faux syntaxiquement (vive MySql). Toute les colonnes de la clause SELECT, non encadrées par des fonctions d'agrégation (min, max, etc), doivent apparaitre dans le group by. Mais vu que vous n'utilisez pas de fonction d'agrégation du tout, à quoi vous sert ce group by ? Le réel problème va, ceci dit, surement résider dans cette condition "like (%ma_val%)" En utilisant, un like %% vous ne pouvez pas utilisez d'index et ceci force bien souvant un scanange total de votre table. La seule optimisation de cette requête (en dehors de votre mauvaise syntaxe, qui pourrai amener à virer totallement le group by) serai de vérifiez que vous avez bien des index sur les colones : localityId et sheetTypeId. Ce n'est pas sur qu'il l'utilise au vu de votre autre condition (like %%), mais à essayer. |
|
|
00
|
|
|
#3 |
![]() ![]() |
1) Un GROUP BY sans fonction de regroupement dans le SELECT ne sert à rien.
tout autre SGBD que MySQL aurait d'ailleurs refusé cette requête car toutes les colonnes du SELECT ne faisant pas l'objet d'une fonction de regroupement doivent se trouver dans le GROUP BY. Les valeurs des colonnes présentes dans le SELECT et absentes du GROUP BY seront aléatoires ! 2) Est-ce que les variables PHP contiennent bien des listes qui justifient l'utilisation de IN ? 3) Estc-e que les colonnes localityId et sheetTypeId sont indexées ? EDIT : Grilled by punkoff !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com