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

MIN / MAX so với ORDER BY và LIMIT

Trong trường hợp xấu nhất, khi bạn đang xem trường không được lập chỉ mục, sử dụng MIN() yêu cầu một đường chuyền đầy đủ duy nhất của bảng. Sử dụng SORTLIMIT yêu cầu một tập tin. Nếu chạy với một bảng lớn, có thể sẽ có sự khác biệt đáng kể về hiệu suất đạt được. Là một điểm dữ liệu giai thoại, MIN() mất .36 giây trong khi SORTLIMIT lấy .84 giây so với bảng 106.000 hàng trên máy chủ nhà phát triển của tôi.

Tuy nhiên, nếu bạn đang xem một cột được lập chỉ mục, thì sự khác biệt sẽ khó nhận thấy hơn (điểm dữ liệu vô nghĩa là 0,00 giây trong cả hai trường hợp). Tuy nhiên, nhìn vào đầu ra của giải thích, có vẻ như MIN() có thể chỉ cần lấy giá trị nhỏ nhất từ ​​chỉ mục ('Chọn bảng được tối ưu hóa' và hàng 'NULL') trong khi SORTLIMIT vẫn cần thực hiện duyệt chỉ mục có thứ tự (106.000 hàng). Tác động thực tế về hiệu suất có thể không đáng kể.

Có vẻ như MIN() là cách để đi - nó nhanh hơn trong trường hợp xấu nhất, không thể phân biệt được trong trường hợp tốt nhất, là SQL tiêu chuẩn và thể hiện rõ ràng nhất giá trị mà bạn đang cố gắng đạt được. Trường hợp duy nhất có vẻ như sử dụng SORTLIMIT sẽ là mong muốn, như mson đã đề cập, nơi bạn đang viết một phép toán chung tìm giá trị N trên cùng hoặc dưới cùng từ các cột tùy ý và không đáng để viết ra hoạt động trong trường hợp đặc biệt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql có tương đương với @@ ROWCOUNT như trong mssql không?

  2. Lỗi MySQL 1241:Toán hạng phải chứa 1 (các) cột

  3. Thoát khỏi báo giá đơn trong PHP khi chèn vào MySQL

  4. Chèn nhiều hàng với một truy vấn MySQL

  5. Tính tuổi dựa trên ngày sinh