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 _______________________________________________ gull mailing list [email protected] http://lists.alphanet.ch/mailman/listinfo/gull
