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

Sådan gør du:Rangering af søgeresultater

du kunne opnå dette i én forespørgsel ved at bruge 'UNION ALL' i MySQL.

Du skal blot gå gennem tokens i PHP og skabe en UNION ALL for hvert token:

hvis tokens f.eks. er 'x', 'y' og 'z' kan din forespørgsel se sådan ud

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...

Ordrebestemmelsen skal fungere på hele resultatsættet som én, hvilket er det, du har brug for.

Med hensyn til ydeevne vil det ikke være så hurtigt (jeg gætter på), men med databaser er den vigtigste overhead med hensyn til hastighed ofte at sende forespørgslen til databasemotoren fra PHP og modtage resultaterne. Med denne teknik sker dette kun én gang i stedet for én gang pr. token, så ydeevnen vil stige, jeg ved bare ikke, om det vil være nok.



  1. Opdel kommaseparerede kolonnedata i yderligere kolonner

  2. Find forælder rekursivt ved hjælp af Query

  3. Oracle 11g - Hvordan optimerer man langsom parallelindsætningsvalg?

  4. MySQL kartesisk produkt mellem to SELECT-sætninger