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

Cách hiệu quả nhất để lưu trữ thứ tự sắp xếp trên một nhóm bản ghi trong cơ sở dữ liệu là gì?

Còn về việc chỉ sử dụng integer cột xác định thứ tự? Theo mặc định, bạn gán các số * 1000, như 1000, 2000, 3000 .... và nếu bạn di chuyển 3000 từ 1000 đến 2000, bạn thay đổi nó thành 1500. Vì vậy, trong hầu hết các trường hợp, bạn không cần phải cập nhật các số khác. Tôi sử dụng cách tiếp cận này và nó hoạt động tốt. Bạn cũng có thể sử dụng double nhưng sau đó bạn không có quyền kiểm soát về độ chính xác và lỗi làm tròn, vì vậy không nên sử dụng nó.

Vì vậy, thuật toán sẽ trông như thế nào :giả sử bạn di chuyển B đến vị trí sau A. Đầu tiên thực hiện chọn để xem thứ tự của bản ghi bên cạnh A. Nếu nó cao hơn thứ tự của A ít nhất +2 thì bạn chỉ cần đặt thứ tự của B để phù hợp với giữa. Nhưng nếu nó chỉ cao hơn +1 (không có khoảng trắng sau A), bạn chọn các bản ghi gần nhau của B để xem có bao nhiêu khoảng trống ở phía này, chia cho 2 và sau đó thêm giá trị này vào thứ tự của tất cả các bản ghi giữa A và B. Đó là nó!

(Lưu ý rằng bạn nên sử dụng giao dịch / khóa cho bất kỳ thuật toán nào chứa nhiều hơn một truy vấn duy nhất, vì vậy điều này cũng áp dụng cho trường hợp này. Cách dễ nhất là sử dụng giao dịch InnoDB.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố PDO bindParam

  2. Chèn vào nhiều bảng trong một truy vấn

  3. cấu trúc cây tốt nhất php / Mysql

  4. Cài đặt nhiều phiên bản MySQL trên máy chủ Linux - sử dụng tệp cấu hình MySQL riêng biệt

  5. Cách tự động tăng 2 cho một bảng cụ thể trong mysql