2009-10-13 4 views
2

저는 Ruby (Ruby on Rails)를 사용 중이며 약 2000 개의 노드가 중첩되어 있습니다. 각 노드에는 두 개의 자식 만있을 수 있습니다.중첩 세트의 한 레벨에있는 노드 수를 계산하십시오.

각 레벨의 노드 수를 확인하는 가장 좋은 방법은 무엇입니까? 나는 이것을하기 위해 형제를 찾고있는 전체 나무를 기어 가야합니까?

감사합니다.

답변

0

사실이 작업을 수행하는 데 "빠른"방법을 찾아 냈습니다. 이 페이지 ("link text")에서 "하위 트리의 깊이"에서 세그먼트를 사용하여 find_by_sql과 함께 제공된 SQL을 사용하여 깊이를 폴링합니다. 그런 다음 반환 된 모델 결과를 반복하고 각 심도 값이 몇 번 발생하는지 계산합니다. 위대한 작품! 보고와 당신의 도움에 감사드립니다!

1

ActiveRecord에는 counter_cache라는 속성이 있으며, 이러한 경우에 특히 적합합니다. Ryan Bates의 스크린 캐스트 Counter Cache Column을 확인하십시오.

+0

아직 카운터 캐시를 채우는 방법이 있습니다. 그리고 그 때문에 그는 데이터를 없애거나 전체 트리를 가로 지르도록해야합니다. 하지만 일단 끝나면 결코 다시 할 필요가 없습니다. – EmFi

+0

한 번 트래버스합니다. – khelll

관련 문제