Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận hầu hết các hàng tương tự trong bảng MySQL và sắp xếp chúng theo độ tương tự

Như trong bảng của tôi hiện tại, tôi chỉ có khoảng 5 nghìn hàng và chúng đang phát triển chậm, tôi quyết định thực sự sử dụng cách tiếp cận đơn giản sau (nó đến với tôi ngay sau khi tôi viết câu hỏi).

Hạt giống có thể nói là Honda Accord (model_id 456), 2004, xăng, 2.0L, 155hp, sedan với ID tự động 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

Nó sẽ hoạt động, miễn là tôi không có quá nhiều hàng. Nếu bảng trở thành 50-100k, tôi có thể sẽ phải chuyển sang một cái gì đó như 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. Rails và lỗi cú pháp MySQL với nhiều câu lệnh SQL trong một khối thực thi

  2. Nguồn dữ liệu MySQL không xuất hiện trong Visual Studio

  3. Làm thế nào để đồng bộ hóa hai bảng của các cơ sở dữ liệu MySQL khác nhau trên cùng một máy?

  4. Làm cách nào để hiển thị các ràng buộc duy nhất của một bảng trong MySQL?

  5. Nối một chuỗi và Id khóa chính trong khi chèn