sql >> Base de Datos >  >> RDS >> Mysql

Cómo hacerlo:Clasificación de resultados de búsqueda

podría lograr esto en una consulta usando 'UNION ALL' en MySQL.

Simplemente recorra los tokens en PHP creando UNION ALL para cada token:

por ejemplo, si los tokens son 'x', 'y' y 'z', su consulta puede verse así

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 cláusula de orden debe operar en todo el conjunto de resultados como uno solo, que es lo que necesita.

En términos de rendimiento, no será tan rápido (supongo), sin embargo, con las bases de datos, la principal sobrecarga en términos de velocidad a menudo es enviar la consulta al motor de la base de datos desde PHP y recibir los resultados. Con esta técnica, esto solo sucede una vez en lugar de una vez por token, por lo que el rendimiento aumentará, pero no sé si será suficiente.