Cách tiếp cận khác được gọi là "lồng nhau set", tôi nghĩ, không phải "lồng nhau cây".
Dù sao, một điều tốt về bản đồ trang web là bạn có thể biết độ sâu tối đa của nó. Tôi nghĩ rằng vấn đề với mô hình kề là SQL tương ứng hoạt động trên một cấp tại một thời điểm, vì vậy nếu bạn có các cấp 'n' thì bạn cần một vòng lặp của câu lệnh SQL 'n' ... nhưng tôi nghĩ (tôi ' m không chắc chắn) nếu bạn biết trước tối đa 'n' thì bạn có thể mã SQL tương ứng với số lượng cố định nhiều cấp.
0,3 giây âm thanh với tôi như một thời gian rất dài để tìm 200 trang, vì vậy có thể là OK.
Ngoài ra, bản đồ trang web không được cập nhật thường xuyên; Vì vậy, ngay cả khi nó mất một thời gian dài để lấy từ SQL, bạn có thể có thể cache cây lấy/tính toán trong RAM. Bên cạnh đó, thay vì lo lắng về SQL để xây dựng một cây, bạn chỉ có thể lưu trữ nó càng đơn giản càng tốt (như danh sách kề), lấy nó từ cơ sở dữ liệu như một tập hợp các hàng đơn giản và xây dựng cây trong RAM. (sử dụng các vòng lặp trong ngôn ngữ lập trình bậc cao của bạn) thay vì sử dụng các vòng lặp trong SQL để xây dựng cây bằng cách sử dụng các câu lệnh SQL.
nên về cơ bản, câu hỏi của bạn là nếu thực hiện một số chưa biết của một số datastructure, chạy trên một mảnh không rõ của phần cứng sẽ mất ít hơn 0,3 giây? tốt đẹp nhất. – shoosh
@Shy - Cơ sở dữ liệu MySQL innoDB trên ngăn xếp LAMP. –
Nó không phải là khó khăn để ném cùng một mẫu thử nghiệm và làm một số thử nghiệm băng ghế dự bị. RDBMS sẽ lưu trữ cái gì? –