par
albat » 07 sept. 2005, 11:30
le HAVING est une clause SQL très lourde car elle nécessite un double traitement des résultats de ta requête.
Il est certain que sur une requête qui renvoie 10 lignes, ce n'est pas bien gênant
mais si, pour remonter ces 10 lignes, tu as dû interroger une table
qui contient plusieurs milliers d'enregistrements, tu vas faire ramer ta base !
Il y a cependant certains cas où il est difficile de s'en passer.
C'est pour cela que le HAVING existe malgré ses inconvénients en terme de performance.
Mais il vaut mieux procéder autrement chaque fois que c'est possible.
Le SQL doit non seulement donner des résultats exacts (c'est vrai que c'est plus sympa !)

mais il doit aussi être optimisé !

le HAVING est une clause SQL très lourde car elle nécessite un double traitement des résultats de ta requête.
Il est certain que sur une requête qui renvoie 10 lignes, ce n'est pas bien gênant
mais si, pour remonter ces 10 lignes, tu as dû interroger une table
qui contient plusieurs milliers d'enregistrements, tu vas faire ramer ta base !
Il y a cependant certains cas où il est difficile de s'en passer.
C'est pour cela que le HAVING existe malgré ses inconvénients en terme de performance.
Mais il vaut mieux procéder autrement chaque fois que c'est possible.
Le SQL doit non seulement donner des résultats exacts (c'est vrai que c'est plus sympa !) :langue:
mais il doit aussi être optimisé ! ;)