内容简介:前一篇文章介绍了比较简单的邻接列表模式,物化路径其实更加容易理解,其实就是在创建节点时,将节点的完整路径进行记录。
前一篇文章介绍了比较简单的邻接列表模式,物化路径其实更加容易理解,其实就是在创建节点时,将节点的完整路径进行记录。以下图为例:
按照Path Enumeration 进行存储后的结果如下:
此种方案借助了unix文件目录的思想,主要时以空间换时间。
查询某一节点下的所有子节点:(以Fruit为例)
|
1 2 |
SET @path = (SELECT path FROM pathTree WHERE node_name = 'Fruit'); SELECT * FROM pathTree WHERE path like CONCAT(@path,'/%'); |
如何查询直属子节点?需要采用 MySQL 的正则表达式查询:
|
1 2 |
SET @path = (SELECT path FROM pathTree WHERE node_name = 'Fruit'); SELECT * FROM pathTree WHERE path REGEXP CONCAT(@path,'/','[0-9]$'); |
查询任意节点的所有上级:(以Yellow为例):
|
1 2 |
SET @path = (SELECT path FROM pathTree WHERE node_name = 'Yellow'); SELECT * FROM pathTree WHERE @path LIKE CONCAT(path, '%') AND path <> @path; |
插入新增数据:
|
1 2 |
SET @parent_path = ( SELECT path FROM pathTree WHERE node_name = 'Fruit'); INSERT INTO pathtree (path,node_name) VALUES (CONCAT(@parent_path,'/',LAST_INSERT_ID()+1),'White') |
此方案的缺点是树的层级太深有可能会超过PATH字段的长度,所以其能支持的最大深度并非无限的。
如果层级数量是确定的,可以再将所有的列都展开,如下图,比较试用于类似行政区划、生物分类法(界、门、纲、目、科、属、种)这些层级确定的内容。
参考文章:
- https://communities.bmc.com/docs/DOC-9902
原文出处: 标点符
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ClickHouse 性能优化?试试物化视图
- Spark 实践:物化视图在 SparkSQL 中的实践
- Spark实践|物化视图在 SparkSQL 中的实践
- c# – 转换为值类型“Double”失败,因为物化值为null
- MySQL 实现树形的遍历
- 巧用 MyBatis 构建树形结构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Intersectional Internet
Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016
From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!