谁能告诉我如何加速mysql group by子句?我已阅读文档,但它没有给出任何好的例子。
UPDATE SQL
SELECT
post.topic_id,
topic.topic_posts,
topic.topic_title,
topic.topic_poster_name,
topic.topic_last_post_id,
forum.forum_name AS group_name,
`group`.slug AS child_slug,
`parent`.slug AS parent_slug
FROM bb_posts post
LEFT JOIN bb_topics topic
ON topic.topic_id = post.topic_id
LEFT JOIN bb_forums forum
ON forum.forum_id = topic.forum_id
LEFT JOIN wp_bp_groups `group`
ON topic.forum_id = `group`.id
LEFT JOIN wp_bp_groups `parent`
ON `group`.parent_id = `parent`.id
WHERE (topic_title LIKE '%$search_terms%' || MATCH(post.post_text) AGAINST('$search_terms'))
&& topic_status = 0
GROUP BY topic_id
ORDER BY topic.topic_start_time DESC
LIMIT $offset,$num
答案 0 :(得分:0)
一般的最佳做法是确保您分组的字段具有索引。
最满意的一种方式 GROUP BY子句是扫描整个 表并创建一个新的临时表 其中每组的所有行都是 连续,然后使用此 临时表来发现组和 应用聚合函数(如果有的话)。在 在某些情况下,MySQL能够做很多事情 比这更好,并避免创造 使用索引的临时表 访问。
答案 1 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/group-by-optimization.html
当您对要分组的列具有索引时,分组依据最快,并且:
答案 2 :(得分:0)
使你的where子句成为连接条件的一部分。