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

Répondre à