首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中将标记保存为位字段。有索引吗?

在MySQL中将标记保存为位字段。有索引吗?
EN

Stack Overflow用户
提问于 2012-07-26 08:30:02
回答 1查看 437关注 0票数 1

我正在尝试使用MySQL为我的项目设计一个类似标签的结构。

在阅读了这个http://forge.mysql.com/wiki/TagSchema之后,我感到非常失望,因为m2m表的设计需要如此多的join,性能在大数据上确实很糟糕。

我想到的是一个标签表,其中每个标记都有一个name和一个id

然后,在我要标记的items表上,每个条目都有一个名为tag的列,每个标记将其位索引标记为1,否则位字段为0。

例如

代码语言:javascript
复制
table: tag

id   name
1    tag1
2    tag2
3    tag3



table: item

id      name    tag (in binary)     tag (in array)
 1      item1   00000001            [tag1]
 2      item2   00000100            [tag3]
 3      item3   00000110            [tag2, tag3]

因此,如果我想查找带有特定标记的item,我只需要使用&标记id来查找二进制标记字段。

  1. 我的设计是好主意还是坏主意?
  2. 是否可以在标记位集字段上使用索引,以便加快查找速度?
  3. 如果MySQL不能做#2,我最好的选择是什么(除了NoSQL)

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-07-26 11:37:36

不,多到多关系所需的两个连接不需要大量数据,这是一个基本的设计模式,而且MySQL在加入方面非常快。如果有超过32个不同的标记(或者如果使用BigInt数据类型,则是64个),您的设计就会中断--您能找出原因吗?另外,通常最好先考虑应用程序的实现,然后再考虑性能问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11665327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档