使用临时表的情况:
sort buffer、内存临时表和 join buffer。这三个数据结构都是用来存放语句执行过程中的中间数据,以辅助 SQL 语句的执行的。...可以看到实用了临时表(Using temporary)。
这个语句的执行流程是这样的:
创建一个内存临时表,这个临时表只有一个整型字段 f,并且 f 是主键字段。...如果使用了 union all ,就不需要临时表了,执行的时候依次执行子查询,得到的结果集直接返回给客户端。因此不需要临时表。...如果这个表 t1 的数据量很大,很可能这个查询需要的磁盘临时表就会占用大量的磁盘空间。
group + order by null 的结果(磁盘临时表):
?...至于为什么0在前面,是因为用了磁盘临时表,id取模 排序后存入临时表,临时的数据应该是0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,…
从这个磁盘临时表读取数据汇总的结果的顺序就是