产生临时表的原因有哪些?
数据库
MySQL
官方
推荐
你在对sql分析语句的执行计划(explain)的时候,发现extra中有Using temporary,那就说明使用了临时表保存中间结果,Mysql在对查询结果排序时使用临时表。出现这种情况我们就需要看下能不能优化一下了。
那首先知道什么情况下会产生临时表
1)ORDER BY子句和GROUP BY子句不同, 例如:ORDERY BY price GROUP BY name;
2)ORDER BY中使用了DISTINCT关键字 ORDERY BY DISTINCT(price)
3)直接使用磁盘临时表的场景
表包含TEXT或者BLOB列;
GROUP BY 或者 DISTINCT 子句中包含长度大于512字节的列;
使用UNION或者UNION ALL时,SELECT子句中包含大于512字节的列;