2011-11-03 8 views
43

Tôi đã đọc trên một số blog và trong một số bài viết liên quan đến tối ưu hóa, cách tối ưu hóa truy vấn. Tôi đọc Tôi cần sử dụng các chỉ mục và đảm bảo tất cả các khóa chính và khóa ngoài của tôi được đặt chính xác bằng cách sử dụng lược đồ cơ sở dữ liệu quan hệ tốt.MySQL giải thích Truy vấn hiểu biết

Bây giờ tôi có một truy vấn tôi cần để tối ưu hóa và tôi có được điều này trên EXPLAIN:

Using where; Using temporary; Using filesort 

Tôi đang sử dụng MySQL 5,5

Tôi biết tôi đang sử dụng WHERE nhưng không phải với bảng tạm thời tôi cũng không filesort? Điều đó có nghĩa là gì?

+4

dán truy vấn của bạn. – DRapp

Trả lời

32

Sử dụng các phương tiện tạm thời mà MySQL cần sử dụng một số bảng tạm thời để lưu trữ dữ liệu trung gian được tính khi thực hiện truy vấn của bạn.

Sử dụng filesort là thuật toán sắp xếp nơi MySQL không thể sử dụng chỉ mục để sắp xếp và do đó không thể thực hiện sắp xếp hoàn chỉnh trong bộ nhớ. Thay vào đó, nó phân loại thành các phần nhỏ hơn và sau đó hợp nhất các kết quả để có được dữ liệu được sắp xếp cuối cùng.

Vui lòng tham khảo http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.

Tôi nghĩ rằng bạn có thể đang sử dụng ORDER BY cùng với một số bảng hoặc truy vấn phụ có nguồn gốc. Sẽ rất tuyệt nếu bạn có thể dán truy vấn của mình và các thông tin về bảng/chỉ mục có liên quan và đầu ra EXPLAIN.

+0

Cảm ơn bạn đã cung cấp thông tin – Ken

5

Cú pháp:

Explain `MySQL Query` 

Ví dụ:EXPLAIN SELECT * FROM categoriesG

Ví dụ:EXPLAIN EXTENDED SELECT City.Name FROM City JOIN Country ON (City.CountryCode = Country.Code) WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G

Giải thích theo sau với truy vấn mysql của bạn

Better explained in details here