临时表是执行sql语句过程中创建的中间过渡表,例如多表联合操作,就需要建立临时表
查看临时表的使用状态
mysql>show global status like 'created_tmp%';
created_tmp_tables 每次创建临时表时都会增加
created_tmp_disk_tables 如果是在磁盘上创建临时表,它会增加
created_tmp_files 表示MySQL服务创建的临时文件数
比较理想的配置是:
created_tmp_disk_tables / created_tmp_tables *100% <= 25%
再看一下临时表的配置:
show variables like '%tmp_table_size%';
tmp_table_size的默认值是32M,说明只有32M以下的临时表才能全部放在内存中,超过的就会用到硬盘临时表
可以适当增加此变量的值,例如
mysql> set session tmp_table_size=40000000;
因为tmp_table_size变量是有作用域的,所以使用 'session'