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

Cách thực hiện:Xếp hạng Kết quả Tìm kiếm

bạn có thể đạt được điều này trong một truy vấn bằng cách sử dụng 'UNION ALL' trong MySQL.

Chỉ cần lặp qua các mã thông báo trong PHP để tạo một LIÊN KẾT TẤT CẢ cho mỗi mã thông báo:

ví dụ:nếu các mã thông báo là 'x', 'y' và 'z' thì truy vấn của bạn có thể trông giống như thế này

SELECT * FROM `entries` 
WHERE token like "%x%" union all 
    SELECT * FROM `entries` 
    WHERE token like "%y%" union all 
        SELECT * FROM `entries` 
        WHERE token like "%z%" ORDER BY score ect...

Mệnh đề thứ tự phải hoạt động trên toàn bộ tập hợp kết quả làm một, đó là điều bạn cần.

Về mặt hiệu suất, nó sẽ không nhanh như vậy (tôi đoán vậy), tuy nhiên với cơ sở dữ liệu, chi phí chính về tốc độ thường là gửi truy vấn đến cơ sở dữ liệu từ PHP và nhận kết quả. Với kỹ thuật này, điều này chỉ xảy ra một lần thay vì một lần cho mỗi mã thông báo, vì vậy hiệu suất sẽ tăng lên, tôi chỉ không biết liệu nó có đủ không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo một truy vấn đệ quy phân cấp MySQL?

  2. Cách trả lại phần bên trái hoặc bên phải của chuỗi trong MySQL

  3. làm thế nào có thể ảnh hưởng đến hiệu suất khi tôi sử dụng UUID làm khóa chính của mình trong MySQL

  4. Chọn cột riêng biệt cùng với một số cột khác trong MySQL

  5. Tôi nên sử dụng ORM nào cho Node.js và MySQL?