sql >> Databáze >  >> RDS >> Mysql

Získání většiny podobných řádků v tabulce MySQL a jejich uspořádání podle podobnosti

Protože v tabulce mám aktuálně jen asi 5 000 řádků a ty pomalu přibývají, rozhodl jsem se skutečně použít následující jednoduchý přístup (napadl mě až po napsání otázky).

Semenem je řekněme Honda Accord (model_id 456), 2004, benzín, 2,0 l, 155 k, sedan s auto-in 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

Bude to fungovat, pokud nebudu moc řádků. Pokud se stůl stane 50-100k, pravděpodobně budu muset přejít na něco jako Lucene ?




  1. Potřebuji vytáhnout data na základě jejich přesné sekvence v poli

  2. Kompletní průvodce opravou chyby SQL Database 5243

  3. Android získává data z tabulky MySql

  4. ClusterControl 1.5 – Automatické ověření zálohy, sestavení Slave ze zálohy a integrace do cloudu