MySQL在许多情况下都邑用到暂时表,总结一下什么时刻会用到暂时表:
什么是暂时表:MySQL用于存储一些中心效果集的表,暂时表只在当前衔接可见,当封闭衔接时,Mysql会自动删除表并开释一切空间。为何会发生暂时表:平常是因为庞杂的SQL致使暂时表被大批建立
暂时表分为两种,一种是内存暂时表,一种是磁盘暂时表。内存暂时表采纳的是memory存储引擎,磁盘暂时表采纳的是myisam存储引擎(磁盘暂时表也能够运用innodb存储引擎,经由过程internal_tmp_disk_storage_engine参数来掌握运用哪一种存储引擎,从mysql5.7.6以后默以为innodb存储引擎,之前版本默以为myisam存储引擎)。离别经由过程Created_tmp_disk_tables 和 Created_tmp_tables 两个参数来检察发生了若干磁盘暂时表和一切发生的暂时表(内存和磁盘)。
内存暂时表空间的大小由两个参数掌握:tmp_table_size 和 max_heap_table_size 。平常来说是经由过程两个参数中较小的数来掌握内存暂时表空间的最大值,而关于最先在内存中建立的暂时表,厥后因为数据太大转移到磁盘上的暂时表,只由max_heap_table_size参数掌握。针对直接在磁盘上发生的暂时表,没有大小掌握。
以下操纵会运用到暂时表:
1ã union查询
2ã 关于视图的操纵,比方运用一些TEMPTABLE算法、union或aggregation
3ã 子查询
4ã semi-join 包括not in、exist等
5ã 查询发生的派生表
6ã 庞杂的group by 和 order by
7ã Insert select 同一个表,mysql会发生一个暂时表缓存select的行
8ã 多个表更新
9ã GROUP_CONCAT() 或许 COUNT(DISTINCT) 语句
。。。
Mysql还会阻挠内存表空间的运用,直接运用磁盘暂时表:
1ã 表中含有BLOB或许TEXT列
2ã 运用union或许union all时,select子句有大于512字节的列
3ã Show columns或许 desc 表的时刻,有LOB或许TEXT
4ã GROUP BY 或许 DISTINCT 子句中包括长度大于512字节的列
相干引荐:
mysql暂时表的运用
Mysql中的暂时表运用方法
以上就是什么时刻会用到暂时表?MySQL暂时表的运用总结的细致内容,更多请关注ki4网别的相干文章!