树形数据库查询优化方案
在开发中,我们经常使用树形结构来展示菜单选项或者组织结构。一般的数据库设计,都采用id,parent_id 的模式来表达树形关系。但是要提取树的节点,必须要用递归算法,多次连接数据库,导致效率比较低下。
本文提出一种优化方案:
- 为数据结构增加一个全路径字段(也可以独立关联表)。每个节点都可以有一个从根节点开始到本节点的路径。如宇宙->银河系->太阳系->地球->中国。这个路径需要维护,每个节点改变了归属关系,都要把此节点相关的记录找出来重算。而且需要一定的储存空间,但这一字段可以存在另一个表里,不影响原表。
- 维护好路径后,就可以快速查找了。以路径字段为排序字段来提取以某个节点为根的整个树。提取的节点当然也是以路径来比较。你会发现记录全部会与递归算法算出的排列顺序一样。所不同的是递归算法算出来的有层次,而现在的没有层次。可以在程序中对数据进行层次化解析。这样只需要一次数据库连接,大大提高效率。
- 层次结构调整算法。在组织结构进行调整时,需要把原来的路径也需要同步调整,方法也是一样,直接调整前序为原来的路径的替换为新的前序路径即可。
树形数据库查询优化方案相关推荐
- SqlServer千万级以上的数据表查询优化方案《冷热数据库分离》的思路
1.是分库而不是分表,分表即需要考虑引入分表算法,又影响后续查询. 2.热数据只占全部数据的一部分,因此每次优先查询热库,以下情况才查询冷库 --a.当查询条件未命中(结果集为空)时,查询冷库. ...
- Mysql数据库千万级数据查询优化方案
Mysql数据库中一个表里有一千多万条数据,怎么快速的查出第900万条后的100条数据? 面试官问:Mysql数据库千万级数据查询优化方案- 首先创建一张表,里面模拟了1000w数据: CREATE ...
- mysql 百万级数据库优化方案【转】
一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...
- Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结
Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java 操作注册表 2 3.1. 使用Preferences ...
- SQL Server数据库优化方案
SQL Server数据库优化方案 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计 ...
- mysql慢查询优化方案
文章目录 1. 分页查询优化 2. 最左前缀原则,覆盖索引优化 ①:覆盖索引优化 ②:索引下推优化 like xx% ③:Order by与Group by优化 ④:长字符串前缀索引优化 ⑤:避免小基 ...
- php多表查询性能优化,MSSQL_SQL Server多表查询优化方案集锦,SQL Server多表查询的优化方案是 - phpStudy...
SQL Server多表查询优化方案集锦 SQL Server多表查询的优化方案是本文我们主要要介绍的内容,本文我们给出了优化方案和具体的优化实例,接下来就让我们一起来了解一下这部分内容. 1.执行路 ...
- SQL数据库不用SQL语句能显示全表的内容_MySQL百万级数据库优化方案
一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...
- 数据库查询优化技术(一):数据库与关系代数
数据库查询优化技术 学习笔记(一) 我是看李海翔的<数据库技术丛书·数据库查询优化器的艺术:原理解析与SQL性能优化>这本书的视频讲解学习的,因为数据库的知识学的不多,直接看优化有些吃力, ...
最新文章
- 动态加载子节点_微信小游戏开发之场景切换和常驻节点传递数据
- RTEMS 4.9.4 bootcard.c 中的 boot_card 函数分析
- 【云端大数据实战】大数据误区、大数据处理步骤分析
- 深度学习总结:GAN,原理,算法描述,pytoch实现
- 从JDK 6升级到JDK 7过程中遇到的一个问题(卸载rpm)
- E:Johnny and Grandmaster
- lisp 车位块自动编号_机械车位做产权登记,真的适合吗?
- Liferay开发学习Part6:Service Builder
- java高级框架应用开发案例教程_Java高级框架应用开发案例教程:struts2+spring+hibernate PDF...
- CSS3中的过渡、动画和变换
- IOS contentOffset该如何理解
- 服装管理解决方案丨汇信
- DCEP即将破茧成蝶,数字货币新革命来了
- kafka 分区多节点消费
- el-form的入门学习
- 2021-04-12
- Yamaha DGX660 电钢琴aux-in只响一边的处理记录
- 浏览器调用桌面程序方法
- Java1.7版本解码base64_JDK Base64 编解码 1.7 和 1.8 的坑
- 51单片机定时器的查询和进入中断处理