Ta requête a une coquille (il y a une jointure en trop. Pour ma seconde j'avoue y être allé un peu vite. Le principe c'est de créer 2 ensembles dans le FROM un avec les postes qui ont un tag « linux » et un avec tout les identifiants qui ont le tag « sql », puis on fait des opérations ensemblistes entre.
Effectivement, la seconde jointure est inutile pour la recherche. En fait, je l'avais ajoutée pour pouvoir récupérer la liste des tags par un "GROUP_CONCAT", comme je le faisais dans mon premier commentaire. Et après je me suis mélangé les pinceaux.
Je viens de tester sur un serveur MySQL avec une table de relations de 600k lignes. La requête prend 0.8s. Avec les mêmes critères et sur les mêmes données (dénormalisées), Sphinx me répond en 0,01 s. (avec une syntaxe simplissime).
[^] # Re: Séparer stockage (relationnel) et recherche
Posté par rogo . En réponse à la dépêche Petit état des lieux du NoSQL. Évalué à 2.
Effectivement, la seconde jointure est inutile pour la recherche. En fait, je l'avais ajoutée pour pouvoir récupérer la liste des tags par un "GROUP_CONCAT", comme je le faisais dans mon premier commentaire. Et après je me suis mélangé les pinceaux.
Je viens de tester sur un serveur MySQL avec une table de relations de 600k lignes. La requête prend 0.8s. Avec les mêmes critères et sur les mêmes données (dénormalisées), Sphinx me répond en 0,01 s. (avec une syntaxe simplissime).