原文资料:https://blog.csdn.net/qq_31730175/article/details/104574681
mysql产生临时表的条件:
- union查询
- 对于视图的操作,比如使用一些TEMPTABLE算法、union或aggregation
- 子查询
- join 包括not in、exist等
- 查询产生的派生表
- 复杂的group by 和 order by
- Insert select 同一个表,mysql会产生一个临时表缓存select的行
- 多个表更新
- GROUP_CONCAT() 或者 COUNT(DISTINCT) 语句
Mysql还会阻止内存表空间的使用,直接使用磁盘临时表:
- 表中含有BLOB或者TEXT列
- 使用union或者union all时,select子句有大于512字节的列
- Show columns或者 desc 表的时候,有LOB或者TEXT
- GROUP BY 或者 DISTINCT 子句中包含长度大于512字节的列