sql >> Database >  >> RDS >> Mysql

How-to:Zoekresultaten rangschikken

je zou dit in één query kunnen bereiken met 'UNION ALL' in MySQL.

Loop gewoon door de tokens in PHP en maak een UNION ALL voor elke token:

als de tokens bijvoorbeeld 'x', 'y' en 'z' zijn, kan uw zoekopdracht er ongeveer zo uitzien

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

De bestelclausule zou op de hele resultaatset als één moeten werken, en dat is wat je nodig hebt.

In termen van prestaties zal het niet zo snel zijn (denk ik), maar met databases is de belangrijkste overhead in termen van snelheid vaak het verzenden van de query naar de database-engine vanuit PHP en het ontvangen van de resultaten. Met deze techniek gebeurt dit maar één keer in plaats van één keer per token, dus de prestaties zullen toenemen, ik weet alleen niet of het genoeg zal zijn.



  1. Hernoem Oracle-tabel of -weergave

  2. MySQL Entity Framework Error - De opgegeven winkelprovider kan niet worden gevonden in de configuratie of is niet geldig

  3. Een blog maken in PHP en MySQL-database - Backend

  4. Een externe sleutel maken in SQL Server (T-SQL-voorbeelden)