Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mendapatkan baris paling mirip di tabel MySQL dan mengurutkannya berdasarkan kesamaan

Seperti di meja saya saat ini saya hanya memiliki sekitar 5k baris dan mereka tumbuh perlahan, saya memutuskan untuk benar-benar menggunakan pendekatan sederhana berikut (itu datang kepada saya tepat setelah saya menulis pertanyaan).

Benihnya katakanlah Honda Accord (model_id 456), 2004, bensin, 2.0L, 155hp, sedan dengan 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

Ini akan berhasil, selama saya tidak terlalu banyak baris. Jika tabel menjadi 50-100k, saya mungkin harus beralih ke sesuatu seperti 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. Bagaimana cara mengambil cadangan satu tabel dalam database MySQL?

  2. Pendekatan mana yang lebih cepat untuk mendapatkan semua POI dari MySQL/MariaDB dengan PHP/Laravel

  3. Optimasi Logika MySql

  4. sql jika dalam pernyataan sisipkan tanpa pilih

  5. Mysql - hapus dari beberapa tabel dengan satu kueri