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

tối ưu hóa các bảng để tìm kiếm bằng mệnh đề LIKE trong MySQL

Bạn nên sử dụng các chỉ mục toàn văn (bạn đã nói là không thể), tự thiết kế tìm kiếm toàn văn hoặc giảm tải tìm kiếm từ MySQL và sử dụng Sphinx / Lucene. Đối với Lucene, bạn có thể sử dụng triển khai Zend_Search_Lucene từ Zend Framework hoặc sử dụng Solr.

Các chỉ mục bình thường trong MySQL là B + Trees và chúng không thể được sử dụng nếu không xác định được điểm bắt đầu của chuỗi (và đây là trường hợp bạn có ký tự đại diện ở đầu)

Một tùy chọn khác là tự triển khai tìm kiếm, sử dụng bảng tham chiếu. Tách văn bản trong các từ và tạo bảng có chứa từ, record_id. Sau đó, trong tìm kiếm, bạn tách truy vấn thành từng từ và tìm kiếm từng từ trong bảng tham chiếu. Bằng cách này, bạn không giới hạn mình ở phần đầu của toàn bộ văn bản mà chỉ giới hạn ở phần đầu của từ đã cho (và dù sao thì bạn cũng sẽ khớp với phần còn lại của các từ)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SUM (DISTINCT) Dựa trên các cột khác

  2. Tôi có thể tham số hóa tên bảng trong một câu lệnh đã soạn sẵn không?

  3. Làm thế nào để chuyển đổi cơ sở dữ liệu MAIN mysql sang InnoDB từ MyIsam

  4. mySQL - cập nhật nhiều cột với một lựa chọn trả về nhiều hàng

  5. Câu lệnh được soạn sẵn trong WordPress với điều kiện IN ()