免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3107 | 回复: 0
打印 上一主题 下一主题

在类似新闻属于多标签这种应用中,如何设计表结构才高效(mysql) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-15 11:17 |只看该作者 |倒序浏览
考虑一个有数百万的新闻系统,每条新闻可能属于多个标签,前台可支持列出所有新闻、列出某标签所属新闻。我目前想到以下实现方式,但是感觉都有问题
1,位运算,新闻表中有一个字段专门记录所属标签,属于某标签,则相应二进制位置1,查询时用位运算得到属于某标签的新闻列表。这种方式开发方便,也比较灵活,但是标签字段不能做索引。查询速度有影响
2,每个标签一个字段:某条新闻属于某标签,则代表该标签的字段置1,否则为0,查询也很直观,不过这样会导致字段中有大量重复数据,也无法利用索引(非1即0这种类型会导致全表扫描么?)
3,每个标签一个表,这种方式查询很快,但是冗余数据太多,且新闻修改删除要操作多个表。
4,对3改进,所有新闻一个表,另外一个表专门用来记录新闻ID和标签的对应关系,获得新闻ID后通过in在新闻表中找记录,但是不知道in操作是否可以利用索引,我做的测试,发现在In操作的字段上加索引不能改善查询性能(虽然EXPLAIN提示利用到了索引)

几个问题请教各位:
1,请问大家还有什么绝招和好办法,你们碰到这种情况怎么处理的?
2,非1即0这种类型的字段会导致全表扫描么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP