【发布时间】:2010-12-18 12:00:33
【问题描述】:
我有一个包含两个表的数据库:页面和标签的结构如下:
- 页面:page_id、page_text、page_tags (任何时候大约 60000 条记录)
- 标签:tag_id、tag_text
(随时大约 300000 条记录)
每个页面都与许多标签相关联(使用 page_tags 列)。我的问题是关于 pages.page_tags 的,特别是,哪种方式存储上述关联最有效?
一种方法是全文索引 page.page_tags 并将相关标签的文本存储在那里,例如:apple orange fruit marmalade
第二种方法也是全文索引 page.page_tags 但存储相关标签的 ID,例如:132 14 24192 14
第三种方法是制作第三张表:tag_assoc,结构如下:
tag_assoc: page_id, tag_id
(对于页面中存在的每个标签,都会存在一条包含页面ID和标签的记录)
您认为哪种方法最有效? 尤其是:
- A) 查询的搜索速度如下: “获取我每个有标签的页面: 苹果和橙子”
- B) 更新表格。一个新的 页面可能到达数据库 经常。这意味着如果一个新的 在其中一些页面中找到标记 标签表中不存在的, 我必须在那里添加它。
如果没有,你有什么建议?
【问题讨论】:
-
谢谢大家。两个答案都同样有帮助,所以我只能接受答案更快的那个
标签: mysql tags performance full-text-search text-processing