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

Tối ưu hóa truy vấn tự tham gia MySQL

bạn đang thiếu một chỉ mục. Hãy thử sử dụng EXPLAIN để phân tích truy vấn của bạn, nó sẽ giúp bạn rất nhiều.

Giải pháp rất đơn giản, đây là: http://sqlfiddle.com/#! 2 / 56deb / 1/0

Bạn cần thêm một chỉ mục bao gồm các cột được sử dụng trong câu lệnh where theo thứ tự chúng được sử dụng:

KEY `night_of_2` (`night_of`,`student_id`,`check_class`)

Ngoài ra, bạn cần buộc sử dụng chỉ mục trên tham gia, vì bạn đang tham gia bảng với chính nó:

JOIN checks checks2

FORCE INDEX (night_of_2) BẬT (checks1.night_of =checks2.night_of)

(nếu có cách nào tốt hơn, tôi muốn biết về nó) :)

Trân trọng,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn với nhiều giá trị trong một cột

  2. Làm thế nào để lập trình một hệ thống bỏ phiếu?

  3. Làm cách nào để kết nối với MySQL trên Amazon EC2 từ Linux / Mac?

  4. MYSQL:COUNT với mệnh đề GROUP BY, LEFT JOIN và WHERE không trả về giá trị 0

  5. mysql tạo bảng động