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

Få de fleste lignende rækker i MySQL-tabellen og ordne dem efter lighed

Da jeg i min tabel i øjeblikket kun har omkring 5k rækker, og de vokser langsomt, besluttede jeg faktisk at bruge følgende enkle tilgang (det kom til mig lige efter jeg skrev spørgsmålet).

Frøet kan sige er Honda Accord (model_id 456), 2004, benzin, 2.0L, 155 hk, sedan med auto-inc ID 123.

SELECT vehicles.*,  
    (IF(`fuel_type`='gasoline', 3, 0) + 
     IF(`body_style`='sedan', 1, 0) + 
     IF(`year` > 2001 AND `year` < 2007, 2, 0) + 
     IF(`engine_size` >= 1.8 AND `engine_size` <= 2.2, 1, 0) + 
     IF(`engine_power`=155, 3, IF(`engine_power`>124 AND `engine_power`<186, 1, 0))) AS `rank`
FROM vehicles
WHERE vehicle_id!=123 AND model_id=456
ORDER BY `rank` DESC
LIMIT 3

Det vil virke, så længe jeg ikke har for mange rækker. Hvis tabellen bliver 50-100k, bliver jeg sandsynligvis nødt til at skifte til noget som Lucene ?




  1. FEJL 1075:Forkert tabeldefinition; der kan kun være én autokolonne, og den skal defineres som en nøgle

  2. indsæt hastighed i mysql vs cassandra

  3. SqlDateTime.MinValue !=DateTime.MinValue, hvorfor?

  4. Opdaterede Azure SQL Database Tier Options