> 백엔드 개발 > PHP 튜토리얼 > 如何尽可能高效地查询出分类目录的层级信息?

如何尽可能高效地查询出分类目录的层级信息?

WBOY
풀어 주다: 2016-07-06 13:52:57
원래의
1495명이 탐색했습니다.

我有一个简单的文章分类表,主要结构如下

id 父id 标题
1 0 所有项目
2 1 PHP
3 1 Mysql
4 2 ThinkPHP

...
诸如此类。应该是很常见的目录结构吧
意思就是所有项目为一级、PHPMysql为其二级、ThinkPHPPHP的三级目录这样

那么问题来了,假设我现在只知道id=4这么一个数据,请问我要如何列出例如
所有项目 >> PHP >> ThinkPHP
这样的面包屑导航呢?

当然我知道用循环可以列出来,但总感觉浪费性能。是否有更快捷的方法呢?
没有搜索到类似问题的答案,也许是我关键词用得不够合理。最终无奈提问,先谢过各位不吝赐教

回复内容:

我有一个简单的文章分类表,主要结构如下

id 父id 标题
1 0 所有项目
2 1 PHP
3 1 Mysql
4 2 ThinkPHP

...
诸如此类。应该是很常见的目录结构吧
意思就是所有项目为一级、PHPMysql为其二级、ThinkPHPPHP的三级目录这样

那么问题来了,假设我现在只知道id=4这么一个数据,请问我要如何列出例如
所有项目 >> PHP >> ThinkPHP
这样的面包屑导航呢?

当然我知道用循环可以列出来,但总感觉浪费性能。是否有更快捷的方法呢?
没有搜索到类似问题的答案,也许是我关键词用得不够合理。最终无奈提问,先谢过各位不吝赐教

再加一个字段,新增子分类的时候找出所有父级分类生成面包屑。当然这个字段里面存的数据可以灵活存储,不一定要生成固定的面包屑。你可以将其生成数组,josn或者序列化以后存起来,然后取出来之后实时生成面包屑,以应对面包屑灵活生成和改变。

其中最重要的思想是新增子类的时候将其父类数据存起来,也是类似静态缓存的原理。

没有别的方法,因为你既然需要 用到面包屑(从4到2到1)那么就必须有一个查询并提取出的流程。

无非就是用递归还是迭代而已

如果你的类目有固定层级数目的话,可以为每个层级写一个指定的SQL减少请求次数,代码层循环查询浪费性能,但是代码实现简单灵活性强

首先可以确定一个网站的分级目录数据,不会很多.
完全可以把所有的数据从 db 中取出来.
然后递归遍历.
把耗时操作放到代码层面,减少数据库的查询.

没有什么太多的高效方法,缓存应该是一个吧

谢谢邀请。一般这种分类改动很小,你可以用foreach遍历出来缓存一下用就行。我一般就是这么用的

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿