Eléphant du PHP |
91 Messages
07 sept. 2005, 12:12
Ok. Je pensais que MySQL avait un comportement particulier pour le HAVING .
Par contre ORDER BY nécéssite aussi de retraité le resultat. Cependant cette effet peut être annuler (dans certains cas) par l'utilisation pertinente d'un index.
Ta solution avec un sous Select me semble plus pertinente que la solution avec jointure.
Solution HAVING : Parcourt de toute la table pour trouver id max, puis reparcourt pour trouver id < idmax-30, puis tri de 30 ligne. Cette solution ne peut utiliser l'index.
Solution SubQuery : Parcourt de toute la table (ou index + rapide), puis tri de 30 ligne DESC , puis tri ASC
Solution Jointure ; Parcourt de toute la table (ou index + rapide), puis tri DESC, puis pour chaque ligne jointure (si pas index c'est pas top la), puis tri ASC
PS pour SUG : Vu ta volumétrie, prend l'ordre SQL qui te semble le plus simple. Il n'y aura pas de différence notable de performance.[/b]
Modifié en dernier par
Augure le 07 sept. 2005, 13:40, modifié 1 fois.