具有文章和标签的关系数据库的最佳结构

时间:2010-09-04 23:12:36

标签: mysql tags

有一个相当简单的系统:

articles表,tags表,article_tags表,其中包含标记的ID及其分配的文章。

当我想要获取所有文章及其所有标签的列表时,我必须进行一些GROUP_CONCAT()查询以获得逗号分隔的标签列表,我可以拆分并显示

加载大页面的速度越来越慢,我担心这不是最好的方法。我asked a question最近关于获取具有特定标记的所有文章,并最终使用双连接获得解决方案。此查询运行速度很快,但“常规”查询(例如,抓取最新的10篇文章及其所有标签)最多需要1秒才能运行。

我的表编制得很好,其他查询运行得很快。这种SQL结构有更好的方法/设计模式吗?任何提示都非常有用。

谢谢, 马特

3 个答案:

答案 0 :(得分:2)

表结构是正确的,最好的方法是使用EXPLAIN语法分析查询的执行计划,如果需要帮助,请将其发布。

答案 1 :(得分:0)

尝试返回group_concat中的所有标记几乎肯定是瓶颈。

是否存在按正确顺序返回所有行并重复文章的问题?

答案 2 :(得分:0)

也许你可以通过在文章表的另一个字段中预先计算group_concat并在其上添加FULLTEXT索引来使系统加倍。

我不确定表演会是什么,但这很容易尝试。简单的查询将在通常的过程中运行(这将保持更快),并且更复杂的可以以这种方式运行(这将比连接更快)。