MPTT (Modified Pre-order Tree Traversal)를 사용하여 계층 적 데이터를 저장하는 테이블을 만들었습니다. 각 노드는 자손을 찾기 위해 left
및 right
ID를 저장합니다. . 나는 각 행에 parent_id
을 포함시킴으로써 표준 방식과 다른 CakePHP 제안 모델을 사용하고 있습니다.제안 된 MPTT 테이블의 인덱스
CREATE TABLE categories (
id INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INTEGER(10) DEFAULT NULL,
lft INTEGER(10) DEFAULT NULL,
rght INTEGER(10) DEFAULT NULL,
name VARCHAR(255) DEFAULT '',
PRIMARY KEY (id)
);
이전에이 스타일을 사용한 적이 데, 정확히이 검색됩니다 방법을 모르고, 나는 궁금하네요 내가 인덱싱해야 필드 : 여기
는 제안 된 테이블 구조인가? 기본 키만으로 충분합니까? 아니면 lft
및 rght
도 포함해야합니까?
. 대부분의 나무는 쓰여지는 것보다 훨씬 더 많이 읽 힙니다. 그래서 왼쪽과 오른쪽에 두 개의 칼럼 인덱스 (두 개의 별도 인덱스가 아님)를 갖는 것이 좋습니다. 또한 동일한 표에 여러 트리를 저장하는 경우 (예 : grouping_id, left, right에 대해 3 열 인덱스로 만듭니다. – Walf