Zen*_*nth 8 php mysql performance myisam innodb
这可能是一个问题,我失去了更多的时间来思考如何做到正确,思考以最佳的优化方式去做.
我有一个表"内容",并且需要添加选项以将多个"hashtags"或"tags"或"keywords"关联到内容,例如,像"Fried potatos with ketchup"这样的内容具有"键": "土豆","番茄酱"和"炒".
当我用一个单词进行搜索时,例如"马铃薯",我需要显示其中的内容标记这个单词.
问题是,它的最佳结构是什么,考虑结果的速度,因为内容表是MyISAM mith超过30 Millon行.
我想在这:
再添2个表,"contents_hashtags" (id(INT11), content_id(INT11), hashtag_id(INT11))
和"hashtags" (id(INT11), hashtag(VARCHAR(40)))
InnoDB中的2个表
当用户创建/修改表格内容时,我在hashtags表中搜索并获取ID,如果不存在的标签,则在表格标签中创建它,如果存在,则获取ID,使用此ID创建插入在表contents_hashtas中关联内容<-contents_hashtas-> hashtahs
在搜索中,使JOINS(LEFT/RIGHT/INNER dude ..)并通过LIKE进行搜索?通过exact(hashtag ="XXX")或FULL TEXT SEARCH?
这种方法是正确/快速的吗?我不知道如何以大排量和大流量来运行它.
其实多一张桌子就够了
“主题标签”(id(INT11),主题标签(VARCHAR(40))),content_id(int11))
现在您可以简单地按名称添加标签。要获取内容的所有主题标签,请使用
SELECT hashtag FROM hashtable WHERE content_id=$content_id
Run Code Online (Sandbox Code Playgroud)
要添加、删除主题标签,请使用其 id 或主题标签本身将其删除。要获取特定主题标签的内容,只需使用
SELECT ct.* from hashtable ht, contenttable ct WHERE ht.hashtag=$hastag and ct.id=ht.content_id
Run Code Online (Sandbox Code Playgroud)
等等
归档时间: |
|
查看次数: |
6107 次 |
最近记录: |