内部临时表
- 和sort buffer,join buffer一样,都用来存放语句执行过程中的中间数据,辅助语句的执行。
- 使用用法 using temporary。
使用场景
-
数据一边查询,一边直接得到结果,不需要额外内存。比如:group by 需要计算。
-
join_buffer 是无序数组(单字段,可以重复),sort_buffer 有序数组,内部临时表是二维结构
-
用到二维表的特性需要用到内部临时表,比如 distinct ,group by
优化
-
group by 字段加索引
-
扩大临时表内存大小
-
如果数据量比较大,直接使用磁盘临时表
-
如果分组之后,不需要排序,手工 order by null
group by 的顺序
-
创建一个内部临时表,初始化字段 a(分组字段) b(数量)
-
扫描表,一个个的判断,a字段值在临时表不存在,则插入(2,1),如果存在,比如(2,1),则加1,成为(2,2)
-
分组之后,默认会进行排序,如果不需要顺序,用 order by null。