在一些sql请求中,mysql会创建临时表,可能创建到内存中,也可能由内存转存到磁盘。
会创建临时表的查询:
1.group by的列没有索引,必创建临时表
2.order by与group by 为不同列时,或多表查询时order by,group by 包含的列不是第一张表的列,必产生临时表。
3.distinct 与 order by 一起使用可能会产生临时表
4.union合并查询时会用到临时表
如果查询包括group by 但用户想要避免排序结果的消耗,则可以指定order by null禁止排序