可以看到实用了临时表(Using temporary)。
这个语句的执行流程是这样的:
创建一个内存临时表,这个临时表只有一个整型字段 f,并且 f 是主键字段。...执行第一个子查询,得到 1000 这个值,并存入临时表中。
执行第二个子查询:
拿到第一行 id=1000,试图插入临时表中。...从临时表中按行取出数据,返回结果,并删除临时表,结果中包含两行数据分别是 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,…
从这个磁盘临时表读取数据汇总的结果的顺序就是...是有序数组,临时表是二维表结构;
如果执行逻辑需要用到二维表特性,就会优先考虑使用临时表。