Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mode d'emploi :Classement des résultats de recherche

vous pouvez y parvenir en une seule requête en utilisant 'UNION ALL' dans MySQL.

Parcourez simplement les jetons en PHP en créant un UNION ALL pour chaque jeton :

par exemple, si les jetons sont 'x', 'y' et 'z', votre requête peut ressembler à ceci

SELECT * FROM `entries` 
WHERE token like "%x%" union all 
    SELECT * FROM `entries` 
    WHERE token like "%y%" union all 
        SELECT * FROM `entries` 
        WHERE token like "%z%" ORDER BY score ect...

La clause de commande doit fonctionner sur l'ensemble du résultat comme un seul, ce dont vous avez besoin.

En termes de performances, ce ne sera pas si rapide (je suppose), mais avec les bases de données, la principale surcharge en termes de vitesse consiste souvent à envoyer la requête au moteur de base de données à partir de PHP et à recevoir les résultats. Avec cette technique, cela ne se produit qu'une seule fois au lieu d'une fois par jeton, donc les performances augmenteront, je ne sais tout simplement pas si cela suffira.