MySQL group by 优化方案
发布时间
阅读量:
阅读量
group by
group by操作流程涉及对完整数据表(无索引支持)的遍历;每个分组单元将生成一个临时存储位置;在处理过程中动态维护一个临时存储区域;当内存空间耗尽时,则会将临时存储区域的数据迁移到磁盘上。
测试表:
CREATE TABLE tb_a(
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) NOT NULL)
1、取消group by 的默认排序,要求mysql 只使用临时表处理分组。
在user_id 上没有索引,查询计划如下:
sql:
EXPLAIN SELECT user_id,COUNT(1) FROM tb_a
GROUP BY user_id
执行计划:

查询的是全表扫描,使用到了文件排序和临时表。
Group by默认会对查询结果进行排序;若采用Group by null则不会对结果进行排序处理;执行计划如下:
数据库解释以下查询结果,并对结果进行分组处理
全部评论 (0)
还没有任何评论哟~
