首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -瓶颈-连接一对多的新闻文章标签

问MySQL -瓶颈-连接一对多的新闻文章标签
EN

Stack Overflow用户
提问于 2012-05-12 14:43:41
回答 2查看 88关注 0票数 0

我有新闻栏目。物品被贴上标签并存储在三个表格中:

帖子:

代码语言:javascript
复制
posts_id,title,body

标签:

代码语言:javascript
复制
tags_id,name

posts_tags:

代码语言:javascript
复制
posts_id,tags_id

目前的问题是,新闻部分的头版显示了前10篇文章的预览。每个预览都显示标签列表。显示标签列表意味着我必须再次查询每个帖子才能得到标签列表。

因此,例如,10个预览要求,1个查询(从post中获取10个帖子)+10个查询(每个标签上的帖子一个,posts_tags获取标记列表)。11个加载页面的查询似乎最终会成为一个瓶颈。

我应该放弃标记预览吗?支点会产生同样数量的查询吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-12 14:58:49

您可以使用“联接”将所有内容保存在一个查询中。但是,如果要进行某种分组,这种查询可能会非常“昂贵”,特别是。因此,我建议对子选择进行实验。例如:

代码语言:javascript
复制
SELECT (
    SELECT GROUP_CONCAT(name)
    FROM   tags, posts_tags
    WHERE  posts_tags.posts_id = posts.posts_id
    AND    tags.tags_id = posts_tags.tags_id
) FROM posts LIMIT 10

有了这样的子选择,您通常可以获得比正常的连接和分组更好的结果。

缓存当然还是个好主意..。

票数 0
EN

Stack Overflow用户

发布于 2012-05-12 14:51:27

我看到两个主要的解决方案,你可以尝试:

  • 让您的代码在一个查询中完成所有操作(使用联接返回每个带有相关标记的帖子)
  • 在web服务器和脚本语言之间使用缓存层,所以如果页面不改变,就不会再次进行所有查询
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10564695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档