说明
- lft:左值
- rgt:右值
- lv:层级深度
- 优点:平行查询,无限分类,查询效率高
- 缺点:增删改,涉及到多节点调整,效率低
新增
-
取出上级的左值、右值、深度,命名为lft_p、rgt_p、lv_p
-
上级存在:取出直属下级数据(左值大于lft_p,右值小于rgt_p,深度等于lv_p+1)中右值的最大值,命名为lft_i
if (lft_i == null) lft_i = lft_p + 1 else lft_i += 1
-
上级不存在:取出顶层数据(lv=1)中右值的最大值,命名为lft_i
if (lft_i == null) lft_i = 1 else lft_i += 1
-
-
更新现有节点
-- 左值大于lft_i的数据,左值全部+2 update xx set lft = lft +2 where lft > lft_i -- 右值大于等于lft_i的数据,右值全部+2 update xx set rgt = rgt +2 where rgt >= lft_i
-
插入新节点
insert into xx (lft,