【问题标题】:Best structure for a relational database with articles and tags具有文章和标签的关系数据库的最佳结构
【发布时间】:2010-09-04 23:12:35
【问题描述】:

有一个相当简单的系统:

articles 表、tags 表、article_tags 表包含标签的 ID 和它分配给的文章。

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

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

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

谢谢, 马特

【问题讨论】:

  • 请发布您用来获取 10 篇最新文章及其标签的查询

标签: mysql tags


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-25
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多