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

Tại sao STRAIGHT_JOIN lại cải thiện đáng kể truy vấn này và nó có ý nghĩa gì khi nó được viết sau từ khóa SELECT?

STRAIGHT_JOIN buộc thứ tự nối của các bảng, vì vậy table1 được quét trong vòng lặp bên ngoài và table2 trong vòng lặp bên trong.

Trình tối ưu hóa không hoàn hảo (mặc dù khá ổn) và nguyên nhân có thể xảy ra nhất là số liệu thống kê đã lỗi thời.

Không, chỉ khi trình tối ưu hóa sai. Điều này có thể xảy ra nếu phân phối dữ liệu của bạn bị sai lệch nghiêm trọng hoặc không thể được tính toán chính xác (ví dụ:đối với các chỉ mục không gian hoặc toàn văn bản).

Bạn nên thu thập số liệu thống kê, xây dựng kế hoạch cho cả hai cách và hiểu ý nghĩa của những kế hoạch này.

Nếu bạn thấy rằng:

  1. Kế hoạch được tạo tự động không phải là tối ưu và không thể được cải thiện bằng các cách tiêu chuẩn,

  2. STRAIGHT_JOIN phiên bản tốt hơn, bạn luôn hiểu nó và hiểu tại sao nó sẽ luôn luôn như vậy

, sau đó sử dụng STRAIGHT_JOIN .




  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ách thu hút người dùng mới mỗi ngày trong MySQL

  2. Đo điểm chuẩn hiệu suất của MySQL:MySQL 5.7 so với MySQL 8.0

  3. MySQL - Chọn từ danh sách các số không có đối số trong trường id của bảng

  4. Ví dụ về WEEKOFYEAR () - MySQL

  5. Lỗi Rails-MySQL - hằng số chưa khởi tạo MysqlCompat ::MysqlRes