首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql邻接表模型的替代方案?

问Mysql邻接表模型的替代方案?
EN

Stack Overflow用户
提问于 2011-08-23 23:43:48
回答 3查看 1.8K关注 0票数 1

我在MySQL中对我的表使用了邻接表模型,并使用PHP函数递归进行查询,并意识到它会减慢网站的速度。有没有一种替代模型,我可以使用一个查询来同时获得父元素和子元素,而不需要递归?

表结构如下:

代码语言:javascript
复制
    myTable:
+----+----------+
| id | parentID |
+----+----------+
|  1 |     null |
|  2 |        1 |
|  3 |        1 |
|  4 |        2 |
|  5 |        4 |
-----------------

我使用如下所示的递归查询:

代码语言:javascript
复制
function  queryf($id) {

$query = mysql_query("SELECT * FROM `Table` WHERE id='$id'",$this->connect);
while($row = mysql_fetch_assoc($query)) {

$sid = $row['id'];
//code
$this->$queryf($sid);
}

}
EN

回答 3

Stack Overflow用户

发布于 2011-08-23 23:52:04

您可以使用嵌套集方法。

在http://en.wikipedia.org/wiki/Nested_set_model和Move node in nested set中查看更多信息

票数 2
EN

Stack Overflow用户

发布于 2011-09-09 19:58:21

您的表中存储了多少条记录?嵌套集合绝对更快,但表结构非常精细。如果它坏了,修复表结构是非常有挑战性的,而且通常需要手动干预。

如果您只有几百条记录,那么使用邻接方法可能更好。如果你在谈论数千或记录,使用嵌套集合肯定会更好,但确保处理它的代码是100%防弹的,否则你的表将像Humpty Dumpty一样。

虽然邻接列表的效率很低,但有一些方法可以有效地使用它们。我写了一个类来方便地处理邻接表。你可以从这里下载:

http://www.pdvictor.com/en/?sv=&category=just%20code&title=adjacency%20model

票数 2
EN

Stack Overflow用户

发布于 2011-08-23 23:47:23

如果您多次递归查询DB (显然就是这种情况),就会出现性能问题。

您可以做的是一次查询所有数据,然后让PHP递归地处理/组织这些项。你应该不会介意的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7163737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档