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

Sắp xếp theo giá trị tối đa trong ba cột khác nhau

có thể có thể thực hiện trong một truy vấn chọn lọc (có thể sử dụng một cái gì đó như case when mặc dù tôi không chắc điều đó được phép trong order by bản thân mệnh đề, YMMV tùy thuộc vào DBMS) nhưng hiếm khi là ý kiến ​​hay nếu bạn muốn cơ sở dữ liệu của mình mở rộng quy mô cũng như các bảng lớn hơn ("không có hiệu suất của lợn một chân trong cuộc đua ngựa" , như một trong những DBA của chúng tôi đã hùng hồn tuyên bố điều đó).

Trong những tình huống như thế này, tôi thiết lập một cột bổ sung (được lập chỉ mục) để giữ giá trị tối đa và đảm bảo rằng tính toàn vẹn của dữ liệu được duy trì bằng cách sử dụng trình kích hoạt chèn / cập nhật để buộc cột mới đó ở mức tối đa trong ba cột còn lại.

Bởi vì hầu hết các bảng cơ sở dữ liệu được đọc thường xuyên hơn nhiều so với được viết, điều này làm tăng chi phí tính toán trên tất cả các lần đọc. Chi phí chỉ phải chịu khi dữ liệu được cập nhật và các truy vấn trở nên nhanh chóng mặt vì bạn đang đặt hàng trên một cột, được lập chỉ mục, duy nhất:

select f1, f2, f3 from t order by fmax desc;


  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 cách nào để chèn nhiều giá trị hộp kiểm vào một bảng?

  2. Xử lý đúng cách dữ liệu dài trong Hibernate

  3. Lưu dữ liệu vào mysql từ hive hadoop thông qua sqoop?

  4. PHP - Mảng danh sách không có thứ tự (UL) lồng nhau đơn giản

  5. mysql quên ai đã đăng nhập:lệnh bị từ chối đối với người dùng '' @ '%'