[gull] Optimisation Mysql

Daniel Cordey dc at mjt.ch
Thu Mar 31 08:56:02 CEST 2005


On Wednesday 30 March 2005 18:24, Blaise Vogel wrote:

> Avec la requête suivante:
> select a,b, sum(c*d) from ... where ... group by a,b
> Mysql a besoin d'une table temp. pour exécuter la requête, quelle que soit
> le volume de donnée traité. Aucune variable / optimisation n'y change rien
> Par contre la même requête sans le group by:
> select (c*d) from ... where ...
> Ne crée pas de table temp.
> Et exécute la requête en plus de temps !!!

Cea peut aussi dependre de la taille de la (les) table. Pour etre certain que 
l'utilisation optimale de la memoire, il est important de creer des cles pour 
toutes les colonnes que l'on reference dans la section WHERE. Sinon... il va 
balayer l'integralite de la table. Sur une table pas trop grosse ca ne se 
voit pas, mais lorsque la table fait plusieurs centaines de MB, c'est 
flagrant. Les updates sont un peu penalises, mais c'est derisoire en regard 
du gain de temps lorsque l'on indexe correctement les 'colonnes' utilisees. 
Il est vari que le GROUP va aussi utiliser de la memoire; ce qui risque 
d'entrer en competition avec le reste de la requete. Dans ce cas, indexer 
corretement plus GROUP est sans doute la solution optimale.

dc



More information about the gull mailing list