我有新闻栏目。物品被贴上标签并存储在三个表格中:
帖子:
posts_id,title,body标签:
tags_id,nameposts_tags:
posts_id,tags_id目前的问题是,新闻部分的头版显示了前10篇文章的预览。每个预览都显示标签列表。显示标签列表意味着我必须再次查询每个帖子才能得到标签列表。
因此,例如,10个预览要求,1个查询(从post中获取10个帖子)+10个查询(每个标签上的帖子一个,posts_tags获取标记列表)。11个加载页面的查询似乎最终会成为一个瓶颈。
我应该放弃标记预览吗?支点会产生同样数量的查询吗?
发布于 2012-05-12 14:58:49
您可以使用“联接”将所有内容保存在一个查询中。但是,如果要进行某种分组,这种查询可能会非常“昂贵”,特别是。因此,我建议对子选择进行实验。例如:
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有了这样的子选择,您通常可以获得比正常的连接和分组更好的结果。
缓存当然还是个好主意..。
发布于 2012-05-12 14:51:27
我看到两个主要的解决方案,你可以尝试:
https://stackoverflow.com/questions/10564695
复制相似问题