请教在不固定分类的情况下多选分类该如何更好的查询?

2021 年 2 月 19 日
 zjttfs

需求: 动态增减分类(2 级),音乐可以选择 0-n 个分类,用户可以选择 0-n 个分类来筛选结果.

我现在设计的表结构为:

分类表 cate

音乐表 sound

音乐的分类表 sound_cate


想请教下这样的表结构是否合理,是否有更好的方式? 然后我该怎么查询效率较高?

我现在用的子查询来查询,但效率实在太低了.

SELECT id,title from sound  
where 
status=50  
and 
(SELECT count(id) from sound_cate where sound_id=sound.id and cate_id in (8,1,9,14))=3 
order by id desc
1738 次点击
所在节点    MySQL
6 条回复
xuanbg
2021 年 2 月 19 日
你这个多对多的不适合用分类,用 tag 更好。
zjttfs
2021 年 2 月 19 日
@xuanbg 还有一个 tag 字段和 tag 相关的表, 我没有列出来.
现在需求这样,我也很头疼..
zhuangjia
2021 年 2 月 19 日
(SELECT count(id) from sound_cate where sound_id=sound.id and cate_id in (8,1,9,14))=3

这个条件是要实现什么需求
zjttfs
2021 年 2 月 19 日
@zhuangjia
这里写的有点问题,
应该是
(SELECT count(id) from sound_cate where sound_id=sound.id and cate_id in (8,1,9,14))=4

找出含有分类 8,1,9,14 的音乐
zhuangjia
2021 年 2 月 20 日
@zjttfs 200 多点击了,再等等看有没有人来优化 orz
zjttfs
2021 年 2 月 20 日
@zhuangjia sound_cate 做下 sound_id 与 cate_id 的联合索引 , 性能也还可以.
但感觉效率不是很高,暂时还没有做大数据下的负载测试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/754169

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX