我有以下查询:
SELECT SUM(s.count) as count, a.name, s.author_id as id
FROM twitter_author_daily_stats s
JOIN twitter_author a ON s.author_id = a.id
WHERE s.`date` >= '2011-01-07'
AND s.`date` <= '2011-09-21'
AND s.profile_twitter_search_id IN (263)
GROUP BY s.author_id
LIMIT 30;
它使用索引(author_id,profile_twitter_search_id,date);它快(~1s);它返回〜2500行。
但是,当我添加ORDER BY count
时,查询会运行几分钟(我没有等待它完成)。
它不应该从原始查询中取出~2500行并按count
列排序吗?为什么需要这么长时间?
具有更好MySQL知识的人可以解释一下吗?
答案 0 :(得分:1)
更好:让MySQL解释它,使用恰当命名的EXPLAIN
关键字。
索引优化只能在certain situations中执行,更改排序/分组/条件是改变环境的好方法。