临时表介绍

什么是临时表:MySQL用于存储一些中间结果集的表,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。为什么会产生临时表:一般是由于复杂的SQL导致临时表被大量创建

临时表分为两种,一种是内存临时表,一种是磁盘临时表。内存临时表采用的是memory存储引擎,磁盘临时表采用的是myisam存储引擎(磁盘临时表也可以使用innodb存储引擎,通过internal_tmp_disk_storage_engine参数来控制使用哪种存储引擎,从mysql5.7.6之后默认为innodb存储引擎,之前版本默认为myisam存储引擎)。分别通过Created_tmp_disk_tables 和 Created_tmp_tables 两个参数来查看产生了多少磁盘临时表和所有产生的临时表(内存和磁盘)。

MySQL在以下几种情况会创建临时表:

1、UNION查询;

2、用到TEMPTABLE算法或者是UNION查询中的视图;

3、ORDER BY和GROUP BY的子句不一样时;

4、表连接中,ORDER BY的列不是驱动表中的;

5、DISTINCT查询并且加上ORDER BY时;

6、SQL中用到SQL_SMALL_RESULT选项时;

7、FROM中的子查询;

8、子查询或者semi-join时创建的表;

EXPLAIN 查看执行计划结果的 Extra 列中,如果包含 Using Temporary 就表示会用到临时表。

当然了,如果临时表中需要存储的数据量超过了上限( tmp-table-size 或 max-heap-table-size 中取其大者),这时候就需要生成基于磁盘的临时表了。

在以下几种情况下,会创建磁盘临时表:

1、数据表中包含BLOB/TEXT列;

2、在 GROUP BY 或者 DSTINCT 的列中有超过 512字符 的字符类型列(或者超过 512字节的 二进制类型列,在5.6.15之前只管是否超过512字节);

3、在SELECT、UNION、UNION ALL查询中,存在最大长度超过512的列(对于字符串类型是512个字符,对于二进制类型则是512字节);

4、执行SHOW COLUMNS/FIELDS、DESCRIBE等SQL命令,因为它们的执行结果用到了BLOB列类型。

从5.7.5开始,新增一个系统选项 internal_tmp_disk_storage_engine 可定义磁盘临时表的引擎类型为 InnoDB,而在这以前,只能使用 MyISAM。而在5.6.3以后新增的系统选项 default_tmp_storage_engine 是控制 CREATE TEMPORARY TABLE 创建的临时表的引擎类型,在以前默认是MEMORY,不要把这二者混淆了。

详见下例

mysql> set default_tmp_storage_engine = "InnoDB";

-rw-rw---- 1 mysql mysql 8558 Jul 7 15:22 #sql4b0e_10_0.frm -- InnoDB引擎的临时表

-rw-rw---- 1 mysql mysql 98304 Jul 7 15:22 #sql4b0e_10_0.ibd

-rw-rw---- 1 mysql mysql 8558 Jul 7 15:25 #sql4b0e_10_2.frm

mysql> set default_tmp_storage_engine = "MyISAM";

-rw-rw---- 1 mysql mysql 0 Jul 7 15:25 #sql4b0e_10_2.MYD -- MyISAM引擎的临时表

-rw-rw---- 1 mysql mysql 1024 Jul 7 15:25 #sql4b0e_10_2.MYI

mysql> set default_tmp_storage_engine = "MEMORY";

-rw-rw---- 1 mysql mysql 8558 Jul 7 15:26 #sql4b0e_10_3.frm -- MEMORY引擎的临时表

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:MySQL中临时表的基本创建与使用教程

MySQL中关于临时表的一些基本使用方法

MySQL两种临时表的用法详解

MySQL使用临时表加速查询的方法

解析Mysql临时表及特点

浅谈MySQL临时表与派生表

深度解析MySQL 5.7之临时表空间

mysql复制中临时表的运用技巧

MySQL中Update、select联用操作单表、多表,及视图与临时表的区别

MySQL 5.7临时表空间如何玩才能不掉坑里详解

关于JDBC与MySQL临时表空间的深入解析

mysql临时表用法分析【查询结果可存在临时表中】

mysql 创建临时表 时间类型_MySQL问答系列之什么情况下会用到临时表相关推荐

  1. mysql小日期时间类型_MySQL之日期时间类型

    mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DA ...

  2. mysql中所有时间类型_MySQL 中的日期时间类型

    INSERT INTO todo (title,created_on) VALUES ('blah','2019-09-31'); ERROR 1292 (22007): Incorrect date ...

  3. mysql日期和时间类型_MySQL日期和时间类型

    MySQL中存储日和和时间,使用日期和时间类型. 提供的包括YEAR.DATE.TIME.DATETIME和TIMESTAMP. YEAR 占用:1字节 取值范围:1901~2155 日期格式:YYY ...

  4. mysql 创建和删除库_mysql入门系列:mysql创建、删除和选择数据库

    mysql供给了三条数据库级的句子,它们分别是:createdatabase用于创立数据库,dropdatabase用于删去数据库,use用于挑选缺省数据库. 其中约束条件是该数据库的称号有必要是合法 ...

  5. mysql 创建时间类型,MySQL日期和时间类型

    搜索热词 MysqL中存储日和和时间,使用日期和时间类型. 提供的包括YEAR.DATE.TIME.DATETIME和TIMESTAMP. YEAR 占用:1字节 取值范围:1901~2155 日期格 ...

  6. MySQL中的时间类型

    时间是一类重要的数据,MySQL中有多种关于时间的类型可以选择.这篇文章主要介绍MySQL中的时间类型,主要参考MySQL文档:https://dev.mysql.com/doc/refman/8.0 ...

  7. mysql中的时间类型和比较大小

    mysql中的时间类型和比较大小 一.时间类型 二.时间比较 一.时间类型 mysql有五大时间类型: datetime 可以存储年月日时分秒类型的时间,如果在设计字段的时候可以设置获取当前时间,插入 ...

  8. MySQL时间戳和unix时间戳区别、MySQL中的时间类型

    文章目录 1 时间戳 1.1 unix时间戳(unix timestamp) 1.2 MySQL时间戳(timestamp) 2 MySQL中timestamp和datetime的不同点 3 MySQ ...

  9. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的不同标记物情况下对应的AUC曲线、并进行对比

    R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值.R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的不同标记物情况下对应的AUC曲线.并进行对比 目录

最新文章

  1. 使用Eclipse PDT + Xampp搭建Php开发环境
  2. GenXus学习笔记——Transaction的建立
  3. oracle数据库11gr2,Oracle 11g R2 X64数据库安装
  4. c语言双精度百分号,C语言输出百分号%的方法和示例
  5. java 数组 c foreach_在Java 8中,为什么Arrays没有给出forEach的Iterable方法?
  6. android arcgis多变形边框颜色,ArcGIS制图技巧—边框的选择
  7. mysqlin索引失效的情况
  8. python 30个小代码_30个Python常用极简代码,拿走就用
  9. 在AIX系统下查询硬件信息的方法
  10. 吴恩达机器学习视频笔记——简单知识背景
  11. 21天学通C语言-学习笔记(10)
  12. CrystalReports2007安装包
  13. armbian 斐讯n1_[流水账记录] 斐讯N1刷armbian到emmc并安装Docker!
  14. 【笔记】(python)写入文件:写入空文件、写入多行、附加到文件
  15. 虚拟机Windows10下载安装保姆级教程
  16. linux之OPERATION(运维)一
  17. iNFTnews | Yuga Labs收购Meebits,NFT IP市场操纵存在担忧
  18. Scons入门指南 使用教程 笔记
  19. 数据处理之one-hot
  20. 中心计算机集中控制方式必须方式,「1」专科-8707信息技术与信息管理

热门文章

  1. mysql+索引优化+查询优化+存储优化_mysql利用覆盖索引避免回表优化查询
  2. mysql 回滚失败_浅析Mysql 数据回滚错误的解决方法
  3. 卡尔曼滤波器_使用卡尔曼滤波器和路标实现机器人定位
  4. aac蓝牙编解码协议_最新的真无线蓝牙耳机选购指南
  5. 启明云端带你一起撸ESP32开发板,玩转语音、彩屏
  6. 4计算准确率_PyTorch实现,GitHub 4000星:这是微软开源的计算机视觉库
  7. 三维动画制作的基本流程
  8. BZOJ2054: 疯狂的馒头(并查集)
  9. 4月25日 python学习总结 互斥锁 IPC通信 和 生产者消费者模型
  10. 利用WINDOWS活动目录提供LDAP的方案