关于无限级分类数据库表结构设计问题,遍历某分类下所有产品 效率
数据库表结构是这样的:
[Category] 类别表
Id(int) 类别Id
ParentId(int) 父类Id
Name(nvarchar(50)) 类别名称
[Product] 产品表
Id(int) 产品名称
Name(nvarchar(50)) 产品名称
CategoryId(int) 类别Id(对应 [Category].Id)
Info(ntext) 介绍信息
……
[Category] 类别表数据
Id ParentId Name
1 0 服装
2 1 男装
3 2 衬衫
4 2 长裤
5 2 短裤
6 2 T恤
7 2 外套
8 2 卫衣
9 2 西装
10 4 休闲裤
11 4 西裤
12 4 牛仔裤
13 4 运动裤
[Product] 产品表数据 不再一一举例
Id Name CategoryId Info
1
2
3
……
这样设计的结构,存在很严重的效率问题,
假设我想找出某分类(假设为男装)下所有的产品,就需要用递归算法,找出(男装)下的所有子分类,然后对 产品表进行 条件 in 查询,得到产品列表
找出所有男装产品
首先写程序,递归出 男装分类下的子类列表(2,3,4,5,6,7,8,9,10,11,12,13)
然后用 sql 查询出来
select * from [Product] where CategoryId in(2,3,4,5,6,7,8,9,10,11,12,13)
这样做实在是太糟糕了
那么该怎么设计呢?
哔哔one
喵喔喔
茅侃侃
相关分类