我正在尝试使用 MySQL 为我的项目设计一个类似标签的结构。
在阅读了这个http://forge.mysql.com/wiki/TagSchema之后,我感到非常失望,因为 m2m 表设计需要如此多join
的性能,这肯定会影响大数据。
我想到的是一个标签表,其中每个标签都有一个name
和一个id
然后在我要标记的项目表上,每个项目都有一个名为 的列tag
,每个标记将其位索引标记为 1,否则位字段为 0。
例如
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
。
我的设计是好主意还是坏主意?
我可以在标记位集字段上使用索引,以便加快查找速度吗?
如果 MySQL 不能做 #2,我最好的选择是什么(除了 NoSQL)
提前致谢!