Recherche efficace de valeurs séparées par des virgules dans la base de données MySQL
Lorsque vous travaillez avec des tables de données contenant des valeurs séparées par des virgules, il est possible de trouver des correspondances spécifiques être une tâche difficile. Dans ce cas, vous disposez de deux tables : clients (contenant les adresses e-mail) et imap_emails (où le champ à contient les adresses e-mail séparées par des virgules). Vous devez effectuer une recherche efficace dans la table imap_emails en fonction des adresses e-mail de la table clients.
Au lieu d'utiliser une condition LIKE, vous pouvez utiliser la fonction FIND_IN_SET pour effectuer une recherche plus ciblée. Cette fonction vous permet de vérifier si une valeur spécifique est trouvée dans une chaîne séparée par des virgules.
Solution :
La requête suivante montre comment vous pouvez utiliser FIND_IN_SET pour une utilisation efficace recherche :
SELECT * FROM imap_emails INNER JOIN customers ON FIND_IN_SET(customers.email, imap_emails.to) > 0
Cette requête effectue une jointure interne entre les deux tables, faisant correspondre les lignes dans lesquelles l'e-mail du client est présent le champ séparé par des virgules en de la table imap_emails. En utilisant FIND_IN_SET au lieu de LIKE, vous améliorez l'efficacité de la recherche et évitez les faux positifs.
Considérations supplémentaires :
Dans votre question, vous avez mentionné que vous ne pouvez pas utiliser de relations entre les tableaux. Cependant, si vous avez la possibilité d'établir une relation (par exemple en utilisant des clés étrangères), cela améliorerait considérablement l'intégrité des données et les performances de vos requêtes de recherche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!