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

Tối ưu hóa một truy vấn ORDER BY

Có một giới hạn về mức độ tối ưu hóa mà bạn có thể thực hiện đối với mệnh đề ORDER BY. Điều chính đôi khi hữu ích là có một chỉ mục trên đúng tập hợp các cột theo đúng thứ tự. Vì vậy, đối với ví dụ của bạn, một chỉ mục (đơn lẻ, tổng hợp) trên:

average_price_per_month ASC, phone_price_guestimate DESC, contract_length ASC

có thể hữu ích, nhưng trình tối ưu hóa vẫn có thể quyết định rằng tốt hơn là sử dụng một số chỉ mục khác để xử lý các điều khoản bộ lọc trong truy vấn và sau đó nó sẽ tự sắp xếp dữ liệu được chọn. Lưu ý rằng trừ khi chỉ mục cung cấp dữ liệu theo đúng thứ tự được sắp xếp chính xác và việc sử dụng chỉ mục tăng tốc truy vấn tổng thể, khi đó trình tối ưu hóa sẽ không sử dụng nó. Chỉ mục trên một trong các cột được sắp xếp là một lợi ích hạn chế đối với trình tối ưu hóa và nó thường sẽ không sử dụng chỉ mục như vậy.

Một câu hỏi cần xem xét:

  • Truy vấn thực hiện nhanh như thế nào mà không có mệnh đề ORDER BY.

Điều đó cung cấp cho bạn một phép đo rất trực tiếp về chi phí phân loại. Bạn đề cập đến 20 mili giây khi không đặt hàng và 120 mili giây khi đặt hàng, vì vậy ĐẶT HÀNG THEO DÕI là vừa phải. Câu hỏi tiếp theo có thể là "Bạn có thể làm tốt hơn loại nó trong ứng dụng của bạn không?". Bạn có thể làm được điều đó, nhưng gói sắp xếp trong DBMS thường được tối ưu hóa khá tốt và bạn có thể sẽ phải làm việc chăm chỉ để đánh bại 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. Ví dụ về MAKETIME () - MySQL

  2. Nhiều truy vấn phụ thuộc vào nhau

  3. lỗi máy chủ asp 'Không thể tải tệp hoặc lắp ráp' nhưng lắp ráp chắc chắn ở đó.

  4. Lỗi MySQL trên CREATE TABLE cho mối quan hệ nhiều-nhiều

  5. thêm trình kích hoạt vào mọi bảng trong cơ sở dữ liệu H2 của tôi