[Résolu] [MySQL] : count dans clause WHERE

WRInaute passionné
Bonjour à tous,

j'ai un problème :

J'ai une table article (id_article, ...) et une table commentaires (id_com, id_article, ...)

j'aimerais faire une requête qui me sort tout les articles qui n'ont pas de commentaires

Merci à vous
 
WRInaute accro
Il manque pas une jointure pour améliorer le temps d'exécution ? Ou je pète peut-etre un plomb ^^

Code:
WHERE commentaires.id_article = article.id_article

:mrgreen:
 
WRInaute passionné
merci pour ton aide

pour l'instant la base est petite (10000 articles et 70000 commentaires) mais j'espère que ça va grandir ... :-)
 
WRInaute accro
Bah c'est juste que j'ai l'impression qu'il va regarder dans tous les commentaires là, autant directement regarder dans les commentaires qui correspondraient à l'article non ? Je dis ptet des conneries la :s Quelqu'un confirme ?
 
WRInaute discret
YoyoS a dit:
Bah c'est juste que j'ai l'impression qu'il va regarder dans tous les commentaires là, autant directement regarder dans les commentaires qui correspondraient à l'article non ? Je dis ptet des conneries la :s Quelqu'un confirme ?
Il veut la liste de tous les articles qui n'ont pas de commentaire, pas vérifier ceux qui en ont.

Test à faire pour voir si c'est plus optimisé :

Code:
select *
from article
where id_article
not in (select [distinct] id_article from commentaires)
 
WRInaute passionné
ADIDASman a dit:
YoyoS a dit:
Bah c'est juste que j'ai l'impression qu'il va regarder dans tous les commentaires là, autant directement regarder dans les commentaires qui correspondraient à l'article non ? Je dis ptet des conneries la :s Quelqu'un confirme ?
Il veut la liste de tous les articles qui n'ont pas de commentaire, pas vérifier ceux qui en ont.

+1 :D
 
WRInaute accro
J'aurais plutôt fait ça moi, mais je me goure ptet:

Code:
select *
from article
where id_article
not in (select distinct id_article from commentaires WHERE commentaires.id_article = article.id_article)
 
WRInaute discret
YoyoS a dit:
J'aurais plutôt faire ça moi, mais je me goure ptet:
OK, je comprends ce que tu veux dire.
En faisant ce que j'ai dit, la "grosse" sous-requête n'est exécutée qu'une fois au lieu de nb_d_articles fois pour la "petite version".
Test à faire donc.
 
WRInaute passionné
y a un index sur les 2

mais la différence entre les 2 se situera uniquement au niveau des performances ? les résultats seront identiques ?
 
WRInaute passionné
merci des indications :

sans where : 30 tuples - 0.0954 s
avec where : 30 tuples - 0.1013 s

y'aurait pas un bug comme dirait l'autre ?
 
WRInaute accro
il y a bien un index sur les deux id_article ? Sinon, ça dépend donc du nombre d'enregistrements. Le temps gagné à rechercher dans un plus petit lot est perdu par la jointure. Et le benchmark sans indexes ça donne quoi ? :mrgreen:
 
Discussions similaires
Haut