Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobranie najbardziej podobnych wierszy w tabeli MySQL i uporządkowanie ich według podobieństwa

Ponieważ w mojej tabeli mam obecnie tylko około 5 tys. wierszy i powoli rosną, zdecydowałem się zastosować następujące proste podejście (przyszło mi to zaraz po napisaniu pytania).

Nasiona, powiedzmy, to Honda Accord (model_id 456), 2004, benzyna, 2.0L, 155KM, sedan z autoinc 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

To zadziała, o ile nie zrobię zbyt wielu rzędów. Jeśli tabela stanie się 50-100k, prawdopodobnie będę musiał przełączyć się na coś takiego jak Lucene ?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. W CentOS7 nie można uruchomić MySQL

  2. Optymalizacja zapytań SQL - czas wykonania

  3. Importowanie spakowanych plików w Mysql za pomocą CMD

  4. Konwersja formatu daty SQL? [dd.mm.rr do RRRR-MM-DD]

  5. Podczas uruchamiania UPDATE ... datetime =TERAZ(); czy wszystkie zaktualizowane wiersze będą miały tę samą datę/godzinę?