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

làm thế nào để triển khai thuật toán tìm kiếm hiệu quả khi sử dụng php và cơ sở dữ liệu mysql?

Một số cách khác nhau để thực hiện việc này:

Cách nhanh hơn (hiệu suất khôn ngoan) là:select * FROM Table where keyword LIKE '%value%' Mẹo trong cái này là vị trí của% là một ký tự đại diện, nói rằng tìm kiếm mọi thứ kết thúc hoặc bắt đầu bằng giá trị này.

Một chức năng linh hoạt hơn nhưng (hơi) chậm hơn có thể là chức năng REGEXP:

Select * FROM Table WHERE keyword REGEXP 'value'

Điều này đang sử dụng sức mạnh của các biểu thức chính quy, vì vậy bạn có thể xây dựng như bạn muốn với nó. Tuy nhiên, việc để lại như trên mang lại cho bạn một loại "Google của người nghèo", cho phép tìm kiếm trở thành từng mảnh của các trường tổng thể.

Phần dính sẽ xuất hiện nếu bạn đang cố gắng tìm kiếm tên. Ví dụ:một trong hai sẽ tìm thấy tên "smith" nếu bạn tìm kiếm SMI. Tuy nhiên, sẽ không tìm thấy "Jon Smith" nếu có trường họ và tên được phân tách. Vì vậy, bạn sẽ phải thực hiện một số nối cho tìm kiếm để tìm Jon OR Smith HOẶC Jon Smith HOẶC Smith, Jon. Nó thực sự có thể ném tuyết từ đó.

Tất nhiên, nếu bạn đang thực hiện một số loại tìm kiếm nâng cao, bạn sẽ phải điều chỉnh truy vấn của mình cho phù hợp. Vì vậy, ví dụ:nếu bạn muốn tìm kiếm địa chỉ đầu tiên, cuối cùng, thì truy vấn của bạn sẽ phải kiểm tra từng:

SELECT * FROM table WHERE first LIKE '%value%' OR last LIKE '%value%' OR address LIKE '%value'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL tìm kiếm ID trong mảng từ DB

  2. Làm cách nào để tạo giải đấu vòng tròn một lượt bằng PHP và MySQL?

  3. MySql - TRÊN CHÈN KHÓA DUPLICATE

  4. Đối tượng MySQLConverter 'không có thuộc tính' _tuple_to_mysql 'ngoại lệ với mysql-connector

  5. Tìm hiểu nơi MySQL được cài đặt trên Mac OS X