数据库树结构结果集合遍历性能问题 在数据库中如果选用单表树结构的存储形式,那么只能分级查询节点数据是否有下级节点数据吗。那会使用很多次查询SQL语句,能否有更好的数据结构或者读取方式来解决这种数据库性能瓶颈。哪为大侠给点意见。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没什么特别好的办法,oracle 中有SELECT .... FROM ... START WITH fld='100' CONNECT BY PRIOR fld = parentFld但mySQL中仅靠一句SQL不行[align=center]==== 思想重于技巧 ====[/align] 如果你的 树结构 的深度固定,可以考虑 多个 left / inner join来减少执行SQL的次数,但效率未必比你现在的逐个执行好[align=center]==== 思想重于技巧 ====[/align] 如果树的深度无法预测,则我一般的做法和你一样,使用递归遍历来产生节点树。毕竟这些这些小SQL的代价并不大[align=center]==== 思想重于技巧 ====[/align] 看一下,很好的例子http://dev.mysql.com/tech-resources/articles/hierarchical-data.html 谢谢。。其实本人考虑到使用树时,发现树的存储在一个二维表中是比较方便,而且通过,ROOT和CHILD就能完全分离,但是唯一的不足就是对资源的消耗,尤其是在深度没有确定的同时,如果没有解决好查询SQL优化,那效率更慢。因为深度的增加和消耗是按H的次方增长的。唉。这个问题现在还在想用更好的方法来处理。毕竟树的数据结构是比较常用。谢谢两位了。 谢谢yueliangdao0608提供的文献在看了刚才的那篇文章,发现文章中所提到的数据结构和我现在用的 结构是类似的,可以分节点和深度来标识,我自己将节点和深度整合在了一个表里面,通过深度标识出每级的节点,但是这里出现了一个问题是如何标识节点级数问题,我选择的是深度和ROOT节点对映,从而不用左右级联查询,用一般的SQL语句就能更方便的查询,现在只要做SQL语句优化,把查询结果数量级案大到小过滤的写入WHERE就可以了。非常感谢 新手求助:如何修改下面的排名程序及一些小问题。 Java调用MySQL的Function出现does not exist! MySQL游标向后遍历 关于自增长字段的问题 asp无法读出mysql数据库的text,longtext等字段内容 初学者问题 帮忙看看这是什么意思 关于MYsql1.4版本的图形用户界面问题高手进来看看急!!!!!! 检索数据排列问题 求一个带有条件判断的SQL语句或函数 多张表嵌套查询语句优化 最好的mysql管理工具是什么呀?最好是中文的 mssql转成mysql或pgsql
SELECT ....
FROM ...
START WITH fld='100'
CONNECT BY PRIOR fld = parentFld但mySQL中仅靠一句SQL不行[align=center]==== 思想重于技巧 ====
[/align]
[/align]
[/align]
在看了刚才的那篇文章,发现文章中所提到的数据结构和我现在用的 结构是类似的,可以分节点和深度来标识,我自己将节点和深度整合在了一个表里面,通过深度标识出每级的节点,但是这里出现了一个问题是如何标识节点级数问题,我选择的是深度和ROOT节点对映,从而不用左右级联查询,用一般的SQL语句就能更方便的查询,现在只要做SQL语句优化,把查询结果数量级案大到小过滤的写入WHERE就可以了。
非常感谢