Đ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.