Có cách nào để theo dõi công việc của trình tối ưu hóa trong MySQL không?


7

Giống như cấu trúc MEMO trong SQL Server, đây là một "bước giấy" của các bước mà trình tối ưu hóa thực hiện trong việc tối ưu hóa truy vấn. Có bất cứ điều gì trong MySQL thông qua đó tôi có thể nhận được thông tin như, kế hoạch mà trình tối ưu hóa xem xét, chi phí của mỗi kế hoạch không?

Câu trả lời:


9

Phiên bản 5.6 gần đây đã thêm tính năng này.

Xem: Hướng dẫn sử dụng nội bộ của MySQL :: chương 9. Truy tìm trình tối ưu hóa

Cách sử dụng điển hình:

# Turn tracing on (it's off by default):
SET optimizer_trace="enabled=on";

SELECT ...; # your query here

SELECT * FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE;

# possibly more queries...

# When done with tracing, disable it:
SET optimizer_trace="enabled=off";

Bạn có thể thấy nó hoạt động trong SQL-Fiddle . Không chắc làm thế nào đầu ra có thể được làm đẹp.


+1 để sử dụng bảng information_schema mới cho MySQL 5.6.
RolandoMySQLDBA

1

Điều tốt nhất tôi có thể đề cập ngay lập tức là chỉ cần chạy GIẢI THÍCH trên một truy vấn.

Có một cách đồ họa để làm điều này

Đối với các bước để tối ưu hóa truy vấn, cây phân tích được tạo. Thay vì giải thích trình phân tích cú pháp ở đây, vui lòng đọc bài đăng của tôi từ ngày 11 tháng 3 năm 2013 ( Có sự khác biệt thực thi giữa điều kiện THAM GIA và điều kiện WHERE không? ) Về những gì trình phân tích cú pháp thực hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.