zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

SQL处理多级分类,查询结果呈树形结构

SQL 处理 查询 结构 结果 分类 树形 多级
2023-06-13 09:14:35 时间
这样处理的弊端是:如果数据量大,子分类很多,达到4级以上,这方法处理极端占用数据库连接池
对性能影响很大。

如果用SQL下面的CTE递归处理的话,一次性就能把结果给查询出来,而且性能很不错
比用程序处理(数据量很大的情况),临时表性能更好,更方便
复制代码代码如下:

withareaas(
select*,idpx,cast(idasnvarchar(4000))px2fromregionwhereparentid=0
unionall
selecta.*,b.px,b.px2+ltrim(a.region_id)fromregionajoinareabona.parentid=b.id
)select*fromareaorderbypx,px2


可以查询出结果—-所有分类及相应分类下子分类
idtitleparentid
1广东省0
2广州1
3白云区2
4深圳1
5湖南省0
6长沙5
7株洲5
复制代码代码如下:

withareaas(
select*fromregionwhereparentid=1
unionall
selecta.*fromregionajoinareabona.parentid=b.id
)select*fromarea

可以查询出结果—-指定分类及相应分类下子分类
idtitleparentid
1广东省0
2广州1
3白云区2


性能分析:
对于一个3500条地区记录的数据表,其中有省,市,县3级
查询用时要1秒,视觉上感觉有点点慢,但不影响
数据量不大的分类,使用绝对无压力