首页 > 代码库 > 何时产生临时表?

何时产生临时表?

我们在执行某些SQL语句的时候有可能会生成临时表.我们应该尽量的去避免临时表.因为临时表会浪费内存和时间.那么什么情况下会产生临时表呢?

这是来自MYSQL官方的说明

If there is an ORDER BY clause and a different GROUP BY clause  [官方说明]
ORDER BY 子句和一个不一样的 GROUP BY 子句
经过我的测试得出的结论的是: 当使用GROUP BY 时未使用到索引就会产生临时表.

 

在商品表(goods) 中取出每个栏目下的所有商品价格总和,并且按栏目ID排序

 

 


if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created. [官方说明]
使用 ORDER BY 子句和一个不一样的 GROUP BY 子句,或者 ORDER BY 或 GROUP BY 的列不是来自JOIN语句序列的第一个表,就会产生临时表.