我只是建立一個表來存儲分層數據使用修改預訂樹遍歷(MPTT) - 你知道一個:每個節點存儲left
和right
ID找到它的後代。我使用的是CakePHP建議的模型,它與標準方法不同,將parent_id
包括在每一行中。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上的三列索引,左側,右側。 – Walf 2011-04-29 01:26:32