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

Tính toán độ sâu trong mô hình mẹ-con trong MySQL

Điều đó phụ thuộc vào việc triển khai thực tế hệ thống phân cấp của bạn trong cơ sở dữ liệu. Nếu bạn đang sử dụng mô hình tập hợp lồng nhau ( http://mikehillyer.com/articles/managing-hierarchical-data- trong mysql / ) bạn có thể truy xuất đường dẫn từ mẹ đến con đầy đủ thông qua một lần chọn.

Cập nhật :Được rồi, vì bạn đang sử dụng mô hình danh sách kề, tôi khuyên bạn nên lưu trữ cấp độ nút trong bảng. Nó không chỉ cung cấp cho bạn độ sâu của nút trong một truy vấn mà còn cho phép bạn truy xuất toàn bộ đường dẫn đến nút đó trong một truy vấn (mặc dù truy vấn đó sẽ phải được tạo động):

SELECT n1.name AS lvl1, n2.name as lvl2, n3.name as lvl3, ..., nN.name as lvlN
  FROM nodes AS n1
  JOIN nodes AS n2 ON n2.parent_id = n1.id
  JOIN nodes AS n3 ON n3.parent_id = n2.id
  ...
  JOIN nodes AS nN ON nN.parent_id = n(N-1).id
WHERE nN.id = myChildNode;

Vì bạn biết rằng nút của bạn ở cấp N nên không cần kết hợp bên trái và, được cung cấp các chỉ mục thích hợp trên id / parent_id, điều này sẽ khá nhanh.
Nhược điểm của cách tiếp cận này là bạn sẽ phải giữ mức nút được cập nhật trong quá trình di chuyển nút, nhưng điều đó phải đơn giản và nhanh chóng vì bạn chỉ làm điều đó cho chính nút và các nút con của nó - chứ không phải cho phần lớn bảng như bạn làm với các bộ lồng nhau.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chuyển tệp sql cho nodejs để thực thi toàn bộ

  2. Truy vấn MySQL - Kết hợp dữ liệu dựa trên hai yếu tố, sau đó tùy chỉnh cách dữ liệu được sắp xếp dựa trên các giá trị

  3. Xóa hồ sơ trước một ngày nhất định

  4. X lần nhập blog cuối cùng - nhưng chỉ một lần cho mỗi người dùng

  5. Tìm kiếm nhiều bảng cho cùng một giá trị và nhận bảng từ kết quả của nó