可以看到实用了临时表(Using temporary)。
这个语句的执行流程是这样的:
创建一个内存临时表,这个临时表只有一个整型字段 f,并且 f 是主键字段。...从临时表中按行取出数据,返回结果,并删除临时表,结果中包含两行数据分别是 1000 和 999。
?...至于为什么0在前面,是因为用了磁盘临时表,id取模 排序后存入临时表,临时的数据应该是0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,…
从这个磁盘临时表读取数据汇总的结果的顺序就是...group by 优化方法 – 索引
不论是使用内存临时表还是磁盘临时表,group by 逻辑都需要构造一个带唯一索引的表,执行代价都是比较高的。...是有序数组,临时表是二维表结构;
如果执行逻辑需要用到二维表特性,就会优先考虑使用临时表。