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

Chỉ mục MySQL làm chậm truy vấn

Có vẻ như article_id là khóa chính cho bảng bài viết.

Vì bạn đang nhóm theo article_id, nên MySQL cần trả về các bản ghi theo thứ tự của cột đó, để thực hiện GROUP BY.

Bạn có thể thấy rằng không có chỉ mục, nó sẽ quét tất cả các bản ghi trong bảng bài viết, nhưng chúng ít nhất theo thứ tự theo article_id, vì vậy không cần sắp xếp sau. Tối ưu hóa LIMIT có thể được áp dụng ở đây, vì nó đã có thứ tự, nó chỉ có thể dừng lại sau khi đạt được năm hàng.

Trong truy vấn với chỉ mục trên tag.name, thay vì quét toàn bộ bảng bài viết, nó sử dụng chỉ mục, nhưng dựa trên bảng thẻ và bắt đầu ở đó. Thật không may, khi thực hiện việc này, các bản ghi sau đó phải được sắp xếp theo article.article_id để hoàn thành mệnh đề GROUP BY. Không thể áp dụng tối ưu hóa LIMIT vì nó phải trả về toàn bộ tập hợp kết quả, sau đó sắp xếp thứ tự để có được 5 hàng đầu tiên.

Trong trường hợp này, MySQL chỉ đoán sai.

Nếu không có mệnh đề LIMIT, tôi đoán rằng việc sử dụng chỉ mục sẽ nhanh hơn, đó có thể là những gì MySQL đã đoán.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XÓA tất cả các chủ đề trùng lặp với một vài điều kiện

  2. Cách tốt nhất để xóa các hàng cũ khỏi MySQL trên cơ sở luân phiên là gì?

  3. Nhập dữ liệu CSV bằng PHP / MySQL

  4. JPA:làm cách nào để duy trì một Chuỗi vào một trường cơ sở dữ liệu, nhập Văn bản MYSQL

  5. Thư mục mysqld_safe '/ var / run / mysqld' cho tệp ổ cắm UNIX không tồn tại