1

我有一个论坛,其中包含主题标题、帖子计数和其他信息。我已经设法优化其他查询/完全删除它们,但是计算每个线程的帖子计数的那个会减慢主板页面的加载速度。

IEecho $boards->getPostCount($thread)

里面getPostCount($thread)只是: $query = $this->db->query("SELECT COUNT(id) FROM forum_posts WHERE threadid = '$thread'

这是一个问题,因为它必须为每个线程执行此操作,并且每页有 20 个线程。

有没有其他方法可以事先获取这些信息,或者以某种方式最小化获取这些信息所需的查询?在任何给定时间都有 150 个用户,因此每页加载 3K 查询不是我想要的。

谢谢。

编辑:我使用的查询的解释: mysql 解释 http://screensnapr.com/e/01hulx.png

4

1 回答 1

0

使用连接:

SELECT  t.*, COUNT(fp.id)
FROM    threads t
LEFT JOIN
        forum_posts fp
ON      fp.threadid = t.id
ORDER BY
        t.last_updated DESC
LIMIT 20

但是,这仍然需要引擎在每次重新加载时计算每个线程的帖子。

您可以启用查询缓存(它非常适合这样的查询),或者只需在每次发布或删除帖子时添加一个post_count字段并更新它。threads

于 2012-04-27T20:48:00.257 回答