内部临时表

内部临时表

  • 和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。

你可能感兴趣的:(mysql,内部临时表,内部临时表的优化,内部临时表的使用场景)