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

2021-02-19 11:01:09 +08:00
 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
1163 次点击
所在节点    MySQL
6 条回复
xuanbg
2021-02-19 11:21:57 +08:00
你这个多对多的不适合用分类,用 tag 更好。
zjttfs
2021-02-19 11:36:05 +08:00
@xuanbg 还有一个 tag 字段和 tag 相关的表, 我没有列出来.
现在需求这样,我也很头疼..
zhuangjia
2021-02-19 11:51:01 +08:00
(SELECT count(id) from sound_cate where sound_id=sound.id and cate_id in (8,1,9,14))=3

这个条件是要实现什么需求
zjttfs
2021-02-19 11:56:57 +08:00
@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-02-20 10:28:42 +08:00
@zjttfs 200 多点击了,再等等看有没有人来优化 orz
zjttfs
2021-02-20 11:25:55 +08:00
@zhuangjia sound_cate 做下 sound_id 与 cate_id 的联合索引 , 性能也还可以.
但感觉效率不是很高,暂时还没有做大数据下的负载测试

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

https://www.v2ex.com/t/754169

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

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

© 2021 V2EX