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

Khi nào sử dụng STRAIGHT_JOIN với MySQL

Tôi không khuyên bạn nên sử dụng STRAIGHT_JOIN mà không có lý do chính đáng. Kinh nghiệm của riêng tôi là trình tối ưu hóa truy vấn MySQL chọn một kế hoạch truy vấn kém thường xuyên hơn tôi muốn, nhưng không đủ thường xuyên để bạn chỉ nên bỏ qua nó nói chung, đó là điều bạn sẽ làm nếu luôn sử dụng STRAIGHT_JOIN.

Khuyến nghị của tôi là để tất cả các truy vấn dưới dạng THAM GIA thông thường. Nếu bạn phát hiện ra rằng một truy vấn đang sử dụng kế hoạch truy vấn phụ tối ưu, trước tiên tôi khuyên bạn nên thử viết lại hoặc cấu trúc lại truy vấn một chút để xem liệu trình tối ưu hóa có chọn kế hoạch truy vấn tốt hơn không. Ngoài ra, đối với innodb ít nhất, hãy đảm bảo rằng không chỉ thống kê chỉ mục của bạn đã lỗi thời ( BẢNG KÍCH THƯỚC ). Điều đó có thể khiến trình tối ưu hóa chọn một kế hoạch truy vấn kém. Các gợi ý về trình tối ưu hóa thường là phương sách cuối cùng của bạn.

Một lý do khác để không sử dụng gợi ý truy vấn là phân phối dữ liệu của bạn có thể thay đổi theo thời gian hoặc tính chọn lọc chỉ mục của bạn có thể thay đổi, v.v. khi bảng của bạn phát triển. Các gợi ý truy vấn của bạn hiện là tối ưu, có thể trở nên chưa tối ưu theo thời gian. Nhưng trình tối ưu hóa sẽ không thể điều chỉnh kế hoạch truy vấn do các gợi ý hiện đã lỗi thời của bạn. Bạn sẽ linh hoạt hơn nếu bạn cho phép trình tối ưu hóa đưa ra quyết định.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tự động tạo sơ đồ cơ sở dữ liệu MySQL

  2. Cách nhập / khôi phục bảng MySql bằng PHP

  3. MySQL trên Docker - Cách chứa cơ sở dữ liệu của bạn:Sách trắng mới

  4. Xóa truy vấn không hoạt động trong mysql

  5. Làm cách nào để bật máy khách MySQL tự động kết nối lại với MySQLdb?