Bonjour,
Ma question fait suite à cette première (résolue): https://www.developpez.net/forums/d2...ect-php-mysql/
Pour faire simple, après avoir battu 4 images et 1 mot, je veux battre le scrabble (j'imagine que ça existe mais c'est pour mon développement perso).
L'idée est de récupérer tous les mots possibles à partir d'une taille (min et max cette fois) de mot et d'une combinaison de lettres proposée (ça marche déjà voir lien ci dessus).
Ensuite pour respecter les lettres de début/fin de mot et potentiellement en travers (un scrabble quoi) qui sont fixées, d'appliquer sur ce résultat un like du type:
select name from firstresults where name like 'a%v%n' (là ça doit trouver avion par exemple).
Vous allez me dire que je peux très bien amender ma requête du lien précédent en rajouant "and name like 'a%v%n' " oui, par contre avec mon système d'index ça risque de pu très bien marcher si l'optimiseur de requête ne veut plus l'appeler (j'ai déjà une chute de perf sur ma requête si j'appelle like et 2 colonnes pour les lettres... j'imagine pas avec les 26 colonnes de l'alphabet).
Ma question est donc, est-ce possible de récupérer la liste précédente (une liste de string) et de réappliquer dessus une nouvelle requête avec mon like, sans passer par une table intermédiaire?
J'ai bien pensé à récupérer la liste dans PHP et lui demander d'alimenter une table "temporaire" avec comme clé d'identification le numéro de session de l'utilisateur, puis d'appliquer le like sur cette table. Par contre ça fait pas mal d'aller/retour entre php et mysql, sans compter les opérations "d'entretiens" (delete des résultats de l'utilisateur quand il refait une recherche systématiquement, et trouver un moyen pour déclencher un nettoyage de la table après que l'utilisateur soit parti/inactif/ un certain temps)...
Dans la même idée, est-ce que moins "coûteux" de traiter ces données directement avec php (j'imagine à coup de regex) que de faire appel au moteur de mysql? Et si oui, une idée, je suis pas au point avec les regex de manière générale?
Merci
Partager