美文网首页
Mysql之运用预排序树算法

Mysql之运用预排序树算法

作者: 隔岸坐看云卷云舒 | 来源:发表于2019-03-24 12:37 被阅读0次

先阅读预排序算法

首先创建表结构:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`lft` int(11) DEFAULT NULL,
`rgt` int(11) DEFAULT NULL,
`content` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS = 1;

预先塞入一条数据:


WechatIMG401.jpeg

现在我们需要新增一条归属第一代下id为1的子孙节点

select id,lft,rgt from test where lft>1 and rgt<2

该result结果集为空,就意味着该节点下没有任何子节点
现在我们需要给父节点的右值进行+2为子孙节点让出位置

update test set rgt = rgt+2 where rgt>1

新增子孙节点

insert into test (name,lft,rgt,content) values('b',2,3,'我是第二代')
WechatIMG402.jpeg

现在我们假定又有一条基于第一代的子孙节点需要加入:

select id,lft,rgt from test where lft>1 and rgt<4

现在结果集不为空
对于该新子孙节点的兄弟节点左值为2 右值为3
那么还是需要给新节点腾出位置
变更所有的受影响的节点,给新节点腾出空位子,所有左节点比该子孙节点大的,都增加2
所有右节点比该子孙节点大的,都增加2

update test set lft = rgt+2 where lft>2
update test set rgt = rgt+2 where rgt>3

新增子孙节点

insert into test (name,lft,rgt,content) values('c',4,5,'我也是第二代')
WechatIMG403.jpeg

算法说明:
新增无兄弟节点的节点,需要变更所有比父级节点左值大的左右值+2,节点自身左值等于父级左值N+1,右值等于(N+1)+1
新增 有兄弟节点的需要变更所有比父级左值大的+2,右值大的+2,腾出空间,节点自身左值等于兄弟右值N+1,右值等于(N+1)+1

相关文章

  • Mysql之运用预排序树算法

    先阅读预排序算法 首先创建表结构: 预先塞入一条数据: 现在我们需要新增一条归属第一代下id为1的子孙节点 该re...

  • 算法之预排序遍历树算法

    在我们需要快速查询后代或者祖先的需求中,预排序遍历树算法就显示了出来 预排序遍历树算法顾名思义其实在数据落地之前就...

  • 预排序遍历树算法小结

    前几天在项目开发中遇到了前辈们所设计的结构(用来实现商品分类),所设计的结构便是利用了预排序遍历树算法。故特...

  • 预排序遍历数算法

    转的地址忘了,如有侵权请@ 预排序遍历树算法 现在让我们看一看另外一种不使用递归计算,更加快速的方法,这就是预排序...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • MySQL左右值无限分类预排序遍历树算法

    引言 大多数用户都曾在数据库中处理过分层数据(hierarchical data),认为分层数据的管理不是关系数据...

  • mysql---索引优化

    一 索引概念 索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立...

  • MySQL索引优化

    概述 索引就是为特定的mysql字段进行一些算法排序,比如二叉树算法和哈希算法,哈希算法是通过简历特征值,然后根据...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

网友评论

      本文标题:Mysql之运用预排序树算法

      本文链接:https://www.haomeiwen.com/subject/yezyvqtx.html