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

Cách lấy N giá trị hàng đầu của mỗi cột trong MySql

Đây KHÔNG phải là điều bạn muốn làm trong một truy vấn duy nhất. Chỉ cần chia nhỏ nó ra, một truy vấn cho mỗi cột. Trong những trường hợp phù hợp (hay còn gọi là với các chỉ mục phù hợp và các loại cột bên phải), MySQL thực sự có thể tối ưu hóa các truy vấn này bằng cách ghi ngắn mạch để nó không bao giờ phải quét toàn bộ bảng mà chỉ cần lấy ra 5 giá trị hàng đầu và hoàn thành.

SELECT column1 FROM table ORDER BY column1 DESC LIMIT 5
SELECT column2 FROM table ORDER BY column2 DESC LIMIT 5
etc

Nếu bạn cố gắng trộn tất cả chúng lại với nhau thành một truy vấn khổng lồ, bạn sẽ chỉ thuyết phục được trình tối ưu hóa từ bỏ và quét lại toàn bộ bảng 50 lần, sau đó sử dụng 50 bảng tạm thời và có thể là một số phân loại tệp để có biện pháp tốt. Vì vậy, trừ khi bảng của bạn có khoảng 10 hàng trong đó (rõ ràng là không có), 50 truy vấn riêng biệt sẽ luôn nhanh hơ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. Làm rõ thứ tự nối để tạo bảng tạm thời

  2. Cách cập nhật lại cột id bắt đầu từ 1

  3. cách sử dụng LIKE với tên cột

  4. Mysql vs sql express server (HEX -> bigint và bigint -> HEX chuyển đổi)

  5. Mã lỗi:2013. Mất kết nối với máy chủ MySQL trong khi truy vấn