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

Truy vấn SQL nào tốt hơn, PHÙ HỢP VỚI LẠI hay THÍCH?

Cập nhật

Kể từ MySQL 5.6 và sau này, InnoDB bảng hỗ trợ Match... Against .

Đầu tiên là nhiều tốt hơn. Trên MyISAM bảng nó sẽ sử dụng một chỉ mục văn bản đầy đủ đối với các cột đó. Người kia sẽ thực hiện quét toàn bộ bảng, thực hiện ghép nối trên mọi hàng và sau đó so sánh.

LIKE chỉ hiệu quả nếu bạn chống lại:

  • một cột (không phải là kết quả của một hàm trừ khi nhà cung cấp cơ sở dữ liệu cụ thể của bạn hỗ trợ các chỉ mục chức năng - ví dụ như Oracle - và bạn đang sử dụng chúng);
  • đầu cột (tức là LIKE 'blah%' trái ngược với LIKE '%blah%' ); và
  • một cột đã được lập chỉ mục.

Nếu bất kỳ một trong những điều kiện đó không đúng, cách duy nhất để công cụ SQL thực thi truy vấn là thực hiện quét toàn bộ bảng. Điều này có thể được sử dụng dưới khoảng 10-20 nghìn hàng. Ngoài ra, nó nhanh chóng không sử dụng được.

Lưu ý: Một vấn đề với MATCH trên MySQL là nó dường như chỉ khớp với toàn bộ các từ nên tìm kiếm 'bla' sẽ không khớp với cột có giá trị là 'blah', nhưng tìm kiếm 'bla *' sẽ phù hợp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt MySQL-python

  2. Chuỗi truy vấn MySQL chứa

  3. Cách sử dụng mật khẩu gốc với MySQL 5.7

  4. Các mẫu ngẫu nhiên đơn giản từ cơ sở dữ liệu Sql

  5. Tôi có thể tạo chế độ xem với tham số trong MySQL không?