mysql在进行group by操作时要想利用索引,必须满足group by的字段同时存入于同一个索引中,且该索引是一个有序索引(如hash索引就不能满足要求)。不仅如此,是否能够利用索引来实现GROUP BY 还与使用的聚合函数有关系。
当mysql query optimizer 无法找到可以利用的合适索引时,就不得不先读取需要的数据,然后通过临时表来完成GROUP BY 操作。