Tôi sẽ thêm nhận xét này dưới dạng nhận xét để trả lời câu trả lời của @Nathan Reed, ngoại trừ nó quá lớn để trở thành một nhận xét và có lẽ trong mọi trường hợp xứng đáng là một câu trả lời riêng biệt.
Chúng tôi đã làm chính xác những gì được đề xuất trong câu trả lời của anh ấy, và trên thực tế có bình luận trong nguồn liên kết đến trang này. Đối với hầu hết các phần, nó đã hoạt động rất tốt, ngoại trừ cứ hai hoặc ba tháng một lần, chúng tôi lại mất một máy chủ ngẫu nhiên không phản hồi do thời gian truy vấn tìm kiếm quá lớn.
Nguyên nhân cốt lõi của vấn đề khiến tôi chú ý trong khi kiểm tra hiệu năng để thử và tìm hiểu nguyên nhân gây ra sự cố này. Nó chỉ có thể là một mối quan tâm nếu bạn cho phép các đối tượng chồng chéo. Trong trò chơi của chúng tôi, chúng tôi làm, và trong trường hợp xấu nhất, đôi khi nó dẫn đến hiệu suất tăng đột biến.
Chúng tôi có một trường hợp cạnh trong đó khoảng 100 đối tượng, tất cả đều có các đĩa giới hạn, được nhóm lại rất gần nhau. Điều đó dẫn đến vấn đề tăng đột biến rất sâu trong cây, bởi vì chúng ta đã đến điểm mà các vật thể lớn hơn diện tích được bao phủ bởi các nút tứ giác, vì vậy mỗi đối tượng mới xuất hiện trong nhiều nút, dẫn đến sự phân chia lớn của cây, do đó, ném tuyết vấn đề ngoài tầm kiểm soát.
Điểm nổi bật của việc này là nếu bạn cho phép các vùng đối tượng chồng lên nhau, hãy theo dõi chặt chẽ mọi thứ nếu bạn có được các cụm đối tượng chặt chẽ, để đảm bảo cây của bạn không bị quá sâu.
Giải pháp tôi hiện đang nghiên cứu là lưu trữ các đối tượng dưới dạng các điểm và sau đó khi thực hiện tìm kiếm, hãy tăng giới hạn của hình chữ nhật tìm kiếm theo bán kính tối đa được lưu trữ trong cây. Điều đó sẽ phù hợp với chúng tôi, vì cây là tìm kiếm vượt qua đầu tiên, sau đó chúng tôi thực hiện kiểm tra phạm vi dựa trên vòng tròn thực sự, cùng với một vài kiểm tra tiêu chí khác, do đó, các cảnh báo sai sẽ được lọc ra.
Số dặm thực tế của bạn có thể thay đổi.