矩阵账户—多叉树结构如何优化查询性能

背景

在一些复杂的业务场景中,需要维护多级账户矩阵的关系。即多层级的母子账户关系。此时如果账户A1登录后,他需要查询到它下面所有的子账户列表。此时应该如何去做。

账户矩阵关系.png

假设表结构中,每一条记录均存储parentId的字段,那么通过递归查询,那么就可以将全部的数据都查询出来。

如果n层矩阵的话,大约要递归查询n次

select * from tableA where parentId in ()

思路

我们可以在表中维护一个字段 parent_id_path,这个字段的目的就是维护目录关系:例如C1的记录维护的是A1,B1,C1,B1维护的是A1,B1,A1维护的是A1

如果查询A1的所有子账户,那么查询语句变成了

select * from tableA where parentId like 'A1,%'

通过like查询的特性,快速将所有命中条件的子账户都查询出来。

缺点:因为每一层均维护了目录树的链路,当矩阵发生替换后,发生替换的每一层节点都需要做出变更。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容