효율적인 MySQL 저장 및 PHP 검색을 위한 최적의 트리 구조
데이터 구조 영역에서 계층적 데이터 저장을 위한 최적의 트리 구조 선택 결정적이다. 다양한 깊이와 무제한 하위 노드가 있는 약 300개의 노드를 포함하는 트리의 경우 핵심 우선 순위는 전체 트리 또는 하위 트리를 빠르게 검색하는 것입니다. 또한 때때로 노드를 추가하거나 이동하는 기능이 필요합니다.
NSM(Nested Set Model)은 효율적인 쿼리 기능으로 인해 이 시나리오에 가장 적합한 접근 방식으로 나타납니다. "Managing Hierarchical Data in MySQL"에서 제공된 문서에 따르면 NSM은 효과적인 솔루션을 제공합니다.
NSM 구현
NSM을 구현하려면 트리의 각 노드에 다음이 필요합니다. 두 개의 추가 열: lft(왼쪽 경계를 나타냄) 및 rgt(오른쪽 경계를 나타냄). 이러한 열은 계층 내 노드의 위치를 정의합니다.
예를 들어, 연결된 MySQL 설명서에 제공된 예를 고려하십시오.
+-------------+----------------------+-----+-----+ | category_id | name | lft | rgt | +-------------+----------------------+-----+-----+ | 1 | ELECTRONICS | 1 | 20 | | 2 | TELEVISIONS | 2 | 9 | | 3 | TUBE | 3 | 4 | | 4 | LCD | 5 | 6 | | 5 | PLASMA | 7 | 8 | | 6 | PORTABLE ELECTRONICS | 10 | 19 | | 7 | MP3 PLAYERS | 11 | 14 | | 8 | FLASH | 12 | 13 | | 9 | CD PLAYERS | 15 | 16 | | 10 | 2 WAY RADIOS | 17 | 18 | +-------------+----------------------+-----+-----+
NSM에서 lft 및 rgt 필드는 다음에 해당합니다. XML 문서에서 열기 및 닫기 태그의 줄 번호는 다음과 같습니다.
1. <electronics> 2. <televisions> 3. <tube> 4. </tube> 5. <lcd> 6. </lcd> 7. <plasma> 8. </plasma> 9. </televisions> 10. <portable electronics> 11. <mp3 players> 12. <flash> 13. </flash> 14. </mp3 players> 15. <cd players> 16. </cd players> 17. <2 way radios> 18. </2 way radios> 19. </portable electronics> 20. </electronics>
이 시각화는 중첩 태그의 이해를 단순화합니다. 여러 쿼리나 조인 없이도 전체 노드를 효율적으로 선택할 수 있습니다.
위 내용은 약 300개의 노드가 있는 효율적인 MySQL 저장 및 PHP의 계층적 데이터 검색을 위한 최적의 트리 구조는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!