Mysql
 sql >> Database >  >> RDS >> Mysql

Procedura:Classificare i risultati della ricerca

potresti ottenerlo in una query usando "UNION ALL" in MySQL.

Basta scorrere i token in PHP creando un UNION ALL per ogni token:

ad esempio, se i token sono "x", "y" e "z", la tua query potrebbe essere simile a questa

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 clausola dell'ordine dovrebbe operare sull'intero set di risultati come uno, che è ciò di cui hai bisogno.

In termini di prestazioni non sarà poi così veloce (suppongo), tuttavia con i database l'overhead principale in termini di velocità è spesso l'invio della query al motore di database da PHP e la ricezione dei risultati. Con questa tecnica questo accade solo una volta invece di una volta per token, quindi le prestazioni aumenteranno, semplicemente non so se sarà sufficiente.