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

Cách tối ưu hóa các truy vấn MySQL dựa trên kế hoạch GIẢI THÍCH

Phụ thuộc vào việc bạn đang làm và truy vấn là gì.

Nói chung, đối với mọi dòng trong EXPLAIN có Using where , bạn cần có nó bằng cách sử dụng chỉ mục (possible keys và các khóa keys cột). Đây là những bộ lọc của bạn và bao gồm WHERE và ON. Có nó nói rằng Using index thậm chí còn tốt hơn. Nó có nghĩa là có một chỉ mục bao trùm và MySQL có thể truy xuất dữ liệu ngay từ chỉ mục thay vì truy cập hàng trong dữ liệu bảng.

Các dòng không có Using where , và nó đang trả về một số lượng lớn các hàng nên được xem xét. Đây là những giá trị trả về cho tất cả các hàng trong bảng. Tôi không biết truy vấn của bạn là gì, vì vậy tôi không biết có nên cảnh giác ở đây hay không. Thử lọc tập hợp kết quả để giảm kích thước và cải thiện hiệu suất.

Nói chung, bạn nên cố gắng tránh nhìn thấy Using filesort hoặc Using temporary , mặc dù những điều đó chỉ tồi tệ nếu bạn không mong đợi chúng.

Filesort thường xuất hiện với mệnh đề ORDER. Bạn thường muốn MySQL sử dụng chỉ mục bao trùm (Using index ) để các hàng được trả về theo thứ tự từ máy chủ. Nếu không, sau đó MySQL phải sắp xếp chúng bằng cách sử dụng filesort.

Using temporary có thể không tốt khi nó tham chiếu đến các bảng dẫn xuất bởi vì chúng không có chỉ mục. Có vẻ như bạn đã tạo một bảng tạm thời với các chỉ mục một cách rõ ràng, vì vậy ở đây, nó không tệ. Đôi khi, lựa chọn duy nhất của bạn là sử dụng bảng dẫn xuất và do đó Using temporary .




  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 bảng kết hợp bên trong cập nhật MySQL

  2. Cập nhật trực tiếp Dữ liệu MySQL

  3. 4 cách để thay thế NULL bằng một giá trị khác trong MySQL

  4. Tự động đặt __tablename__ cho sharding trong SQLAlchemy?

  5. MySQL Great Circle Khoảng cách (công thức Haversine)