COUNT(*) et requetes imbriquées
Posté : 25 nov. 2008, 18:22
Bonjour tout le monde !
J'ai développé un moteur de recherche d'utilisateurs plutot avancé, avec disons une trentaine de critères, des jointures, des GROUP BY, etc...
Toutes les requetes en elle même sont plutôt optimisées, les index sont mis aux bons endroits.
Seulement voilè, je voudrai compter le nombre de résultats (pour mon système de paginations), et, lorsque la requete est complexe, je procède comme cela :
Puisque je ne peux pas toujours mettre le COUNT(*) dans la requete directement (à cause d'une clause GROUP BY, par exemple...). Du coup, lorsque la recherche retourne 60 000 résultats, cela peut prendre une quinzaine de secondes à compter tout ce qui match.
Je recherche un moyen de faire mieux, j'ai vu des trucs sur l'approximation mais je préfererai éviter si je peux faire sans.
Remarques bienvenues !
J'ai développé un moteur de recherche d'utilisateurs plutot avancé, avec disons une trentaine de critères, des jointures, des GROUP BY, etc...
Toutes les requetes en elle même sont plutôt optimisées, les index sont mis aux bons endroits.
Seulement voilè, je voudrai compter le nombre de résultats (pour mon système de paginations), et, lorsque la requete est complexe, je procède comme cela :
Code : Tout sélectionner
SELECT COUNT(*) FROM (SELECT ... FROM `user` WHERE ... GROUP BY ... HAVING ...) AS myCountJe recherche un moyen de faire mieux, j'ai vu des trucs sur l'approximation mais je préfererai éviter si je peux faire sans.
Remarques bienvenues !