In case you have your own slow SQL query, you can optimize it automatically here.
For the query above, the following recommendations will be helpful as part of the SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `forumCategory` ADD INDEX `forumcategory_idx_rewrittenname_active` (`rewrittenName`,`active`);
ALTER TABLE `forumPost` ADD INDEX `forumpost_idx_active_forumtopicid` (`active`,`forumTopicId`);
ALTER TABLE `forumTopic` ADD INDEX `forumtopic_idx_active_forumcateg_id` (`active`,`forumCategoryId`,`id`);
ALTER TABLE `user` ADD INDEX `user_idx_id` (`id`);
SELECT
forumTopic.*,
COUNT(forumPost.id) AS postCount,
MAX(forumPost.date) AS lastPostDate,
(SELECT
u1.name
FROM
user AS u1
WHERE
u1.id = forumPost.posterUserId
AND forumPost.date = MAX(forumPost.date)) AS lastPostUserName,
(SELECT
u2.name
FROM
user AS u2
WHERE
u2.id = forumPost.posterUserId
AND forumPost.date = MIN(forumPost.date)) AS starterUserName
FROM
forumCategory
INNER JOIN
forumTopic
ON forumCategory.id = forumTopic.forumCategoryId
INNER JOIN
forumPost
ON forumPost.forumTopicId = forumTopic.id
WHERE
forumCategory.rewrittenName = 'someforumcategory'
AND forumCategory.active = 'Y'
AND forumTopic.active = 'Y'
AND forumPost.active = 'Y'
GROUP BY
forumTopic.id
ORDER BY
forumPost.date ASC