Có, MySQL có thể sử dụng một chỉ mục trên các cột trong ORDER BY (trong các điều kiện nhất định). Tuy nhiên, MySQL không thể sử dụng một chỉ mục cho thứ tự hỗn hợp ASC, DESC theo ( SELECT * FROM foo ORDER BY bar ASC, pants DESC
). Chia sẻ truy vấn của bạn và câu lệnh CREATE TABLE sẽ giúp chúng tôi trả lời câu hỏi của bạn cụ thể hơn.
Để biết gợi ý về cách tối ưu hóa ĐẶT HÀNG theo mệnh đề:
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
Chỉnh sửa 2012-01-21 8:53 sáng
Có những câu hỏi về nguồn gốc của tuyên bố của tôi về việc sử dụng một chỉ mục với ASC / DESC hỗn hợp trong ORDER BY. Từ tài liệu ORDER BY Tối ưu hóa :
Trong một số trường hợp, MySQL không thể sử dụng các chỉ mục để giải quyết ORDER BY, mặc dù nó vẫn sử dụng các chỉ mục để tìm các hàng khớp với mệnh đề WHERE. Những trường hợp này bao gồm:
...
Bạn trộn ASC và DESC:
CHỌN * TỪ T1 ĐẶT HÀNG THEO key_part1 DESC, key_part2 ASC;
...
Ngoài ra, từ khóa DESC là vô nghĩa trong CREATE INDEX
Một đặc tả index_col_name có thể kết thúc bằng ASC hoặc DESC. Những từ khóa này được phép cho các tiện ích mở rộng trong tương lai để chỉ định lưu trữ giá trị chỉ mục tăng dần hoặc giảm dần. Hiện tại, chúng được phân tích cú pháp nhưng bỏ qua; giá trị chỉ mục luôn được lưu trữ theo thứ tự tăng dần.