MYSQL : Trouver tout les utilisateurs qui n’ont pas de messa

  • Auteur de la discussion Auteur de la discussion rikew
  • Date de début Date de début
WRInaute impliqué
Bonjours a tous !

Mon système permet à des utilisateurs (table user) d’enregistrer des messages (tables messages).
Je cherche le moyen le plus rapide pour trouver tous les utilisateurs qui n’ont pas enregistrés de messages.

Pour cela j’utilise une jointure :

Code:
SELECT id FROM user u LEFT JOIN messages m ON u.id=m.userid WHERE m.id IS NULL

Ca marche, mais voyez vous un moyen d’aller encore plus vite ?

Merci !
 
WRInaute impliqué
Ajouter un champ nbr message dans la table user que tu incrémentes au moment de l'enregistrement de message, comme cela ta recherche se fait que sur une table
 
WRInaute discret
Re: MYSQL : Trouver tout les utilisateurs qui n’ont pas de m

Code:
SELECT id FROM user WHERE id NOT IN (SELECT DISTINCT userid FROM messages)
 
WRInaute impliqué
SELECT id FROM user WHERE id NOT IN (SELECT userid FROM messages)

ca marche nickel !

pourquoi placer un DISTINCT ?
appriori c'est pas utile...
 
WRInaute discret
Je ne sais pas trop comment le moteur mysql fonctionne! Peut être que l'ajout de distinct accélère le calcul et peut être que c'est complètement l'inverse

je m'explique : si la requête (SELECT DISTINCT userid FROM messages) est calculée pour chaque ligne de la table user, alors dans ce cas le DISTINCT ralentit la requête du fait que la recherche d'un id dans une liste avec des doublons est plus rapide que de supprimer les doublons et rechercher l'id ensuite.

Mais si cette requête n'est calculé qu'une seule fois, et ensuite chargée en mémoire, afin d'y effectuer la recherche par id, dans ce cas le temps de déboulonnage (une seule fois) est négligé par rapport à la somme des gain dans chaque recherche!!

En gros, les deux requêtes fonctionneront, mais laquelle sera plus rapide? Soit on demande à un expert mysql soit (plus simple) on fait un petit timer pour comparer les deux solutions soit (plus reposant) tu choisis au pif une des deux et voila
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut