- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉,如果标题有点……蹩脚。基本上,我正在编写一个小型论坛,并使用多个子查询来选择论坛中的线程数、帖子数和最后帖子的日期,同时抓取论坛的信息以显示在主页上!
这是我的查询,因为我不善于解释:
SELECT `f`.*,
(SELECT COUNT(`id`)
FROM `forum_threads`
WHERE `forumId1` = `f`.`id1`
AND `forumId2` = `f`.`id2`) AS `threadCount`,
(SELECT COUNT(`id`)
FROM `forum_posts`
WHERE `forumId1` = `f`.`id1`
AND `forumId2` = `f`.`id2`) AS `postCount`,
(SELECT `date`
FROM `forum_posts`
WHERE `forumId1` = `f`.`id1`
AND `forumId2` = `f`.`id2`
ORDER BY `date` DESC LIMIT 1) AS `lastPostDate`
FROM `forum_forums` AS `f`
ORDER BY `f`.`position` ASC, `f`.`id1` ASC;
我正在使用通用的 foreach 循环来显示结果:
foreach($forums AS $forum) {
echo $forum->name .'<br />';
echo $forum->threadCount .'<br />';
echo $forum->postCount .'<br />';
echo $forum->lastPostDate .'<br />';
}
(当然不完全一样,但为了解释...)
现在我想知道这对性能是否“不利”,或者是否有更好的方法?假设每个论坛中有相当多的帖子和话题。
我最初在论坛表本身中存储“posts”、“threads”和“lastPost”列,并且打算在每次有人创建新线程或帖子时递增 (posts = posts + 1) 值。虽然我也有这个想法并且想知道它是否有什么好处。 :P
最佳答案
我会做一些不同的事情:
在我看来,所有这三个字段:threadCount
、postCount
和 lastPostDate
都是可以在单独的表中维护的字段,比如 forum_stats
仅包含 4 列:
* 论坛编号
* thread_count
* post_count
* 最后发布日期
这些列可以通过更新。 trigger在插入/更新时。
如果您在更新操作期间支付这么小的开销 - 您将获得对 select
的非常快速的查询(并且无论您拥有多少论坛/帖子/线程,它都会保持非常快) .
另一种方法(不是我们好的 TMO):
创建统计表并每天(或每隔几个小时)运行一次 batch-job这将更新统计数据。代价是您显示的数据永远不会是最新的,并且该作业可能需要资源,您可能只想在晚上运行该作业,例如,因为它很重并且您不希望它生效大多数网站访问者。
关于php - MySQL/PHP : Using multiple sub-queries in a query selecing multiple results, 是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170846/
嗨! 我的 XML: RAZSTAVNI PROSTOR DVORAN
在我的初始数据中,有一些有问题的数据,我不想理会它们,所以我这样做 df = df[(df['direction'] 0] # cannot access df1.ix[2] A
抱歉,如果标题有点……蹩脚。基本上,我正在编写一个小型论坛,并使用多个子查询来选择论坛中的线程数、帖子数和最后帖子的日期,同时抓取论坛的信息以显示在主页上! 这是我的查询,因为我不善于解释: SELE
我是一名优秀的程序员,十分优秀!