group by:
通过下面一条 语句来了解有关group by的优化。
SELECT a.first_name,a.last_name,COUNT(*) FROM film_actor fa INNER JOIN actor a USING(actor_id) GROUP BY fa.actor_id;
- 1
如图,这条SQL语句在执行时使用到了临时表(temporary)并用到了文件排序(filesort),在我们的SQL中要尽量减少临时表的使用,由于这条SQL没有任何的WHERE条件,所以用到ALL表扫描也是在所难免的。
优化方法:
EXPLAIN SELECT a.first_name,a.last_name,t.count FROM actor a INNER JOIN (
SELECT actor_id,COUNT(*) count FROM film_actor fa GROUP BY actor_id
) t USING(actor_id);
- 1
- 2
- 3