我使用MySQL为我的网站构建了一个自定义论坛。列表页面本质上是一个表格,包含以下列:主题、最后更新时间和#回复数。
数据库表格有以下列:
一个主题的 topic_id 为“0”,而回复的 topic_id 则为其父主题的 topic_id。
数据库表格有以下列:
id
name
body
date
topic_id
email
一个主题的 topic_id 为“0”,而回复的 topic_id 则为其父主题的 topic_id。
SELECT SQL_CALC_FOUND_ROWS
t.id, t.name, MAX(COALESCE(r.date, t.date)) AS date, COUNT(r.id) AS replies
FROM
wp_pod_tbl_forum t
LEFT OUTER JOIN
wp_pod_tbl_forum r ON (r.topic_id = t.id)
WHERE
t.topic_id = 0
GROUP BY
t.id
ORDER BY
date DESC LIMIT 0,20;
这个表格中大约有2100个项目,查询通常需要长达6秒的时间。我在“topic_id”列上添加了一个索引,但效果不明显。有没有什么方法可以加快查询速度而不需要进行重大重构?
编辑:还没有完全解决。我似乎无法使下面的示例正常工作。