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、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 in 临时表_什么时候会用到临时表?MySQL临时表的使用总结相关推荐

  1. mysql序列号生成_值得一看!数据库及Mysql入门,附详细安装教程

    #什么是数据 用来描述事物的符号记录.可以是数字.文字.图形等,有多种形式,经过数字化之后存入计算机 #什么是数据库 数据库(Database)就是一个用来存放数据库的仓库,是按照一定的数据结构来组织 ...

  2. mysql心得笔记_【原创】学习{我的mysql学习心得}的笔记

    标签: 万丈高楼平地起. 从最基础的做起,从最简单的做起. ---------------------------------------------------------------------- ...

  3. mysql 存储过程无效_用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?解决方法...

    用VC通过DLL包连接mysql,执行存储过程后,再执行其他查询无效? MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mys ...

  4. mysql zrm 配置_利用MySQL-zrm来备份和恢复MySQL数据库方法详解

    MySQL ZRM 工具是用PERL写的可以全部和增量备份MySQL数据库的一个强大工具. 还可以做快照,不过我现在没有条件做.等以后有可以做了再补上. 其实具体要说的也没啥,我只是做了点测试. 这里 ...

  5. mysql+数据库连接标识_新人必看!连接到MySQL数据库的两种方法

    原标题:新人必看!连接到MySQL数据库的两种方法 使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysq ...

  6. 删除电脑中的mysql数据库吗_【数据库】怎么彻底删除mysql服务?

    彻底删除mysql服务的步骤: 1.关闭mysql服务 在cmd命令行输入以下命令 net stop mysql 或者 我的电脑右键->管理->服务,进入后手动关闭. 2.删除MySQL服 ...

  7. JAVA跟MYSQL数据库交互_【编写Java程序实现与Mysql数据库的连接,并交互性的实现简单查询,删除,修改,排序,显示等操作】...

    目前博主只实现了查询和插入,而且还不太会在面板对数据库语句进行更新,写完再看感觉语言有些冗杂,往后再更,大半夜写这个也是醉了呢. import javax.swing.*; import java.a ...

  8. mysql客户库_你应该知道的10个MySQL客户启动选项

    大部分服务器管理员知道MySQL数据库管理系统(RDBMS)是高度灵活的软件块,带有范围广阔的启动选项,可以用来修改相关行为.然而,大部分人却不清楚,标准MySQL客户端带有同等大量的启动选项,其中一 ...

  9. 服务器安装mysql要密码_在阿里云服务器上安装mysql及重置密码

    参考链接:https://www.cnblogs.com/ljysy/p/10324854.html 下载与安装MySQL: 这里采用Yum管理好了各种rpm包的依赖,能够从指定的服务器自动下载RPM ...

  10. pod中mysql配置文件修改_通过configmap更新k8s里的mysql配置文件

    背景: 环境注意:在用rancher搭建的k8s里,mysql是起了一个pod,镜像是网上的mysql:5.7 开发人员提出了一个报错"查询时的ONLY_FULL_GROUP_BY错误&qu ...

最新文章

  1. C#中删除目录以及目录下文件的方法
  2. 【计算机系统设计】实践笔记(3)改进数据通路:jr指令分析与实现
  3. 文本留言 php,一个php作的文本留言本的例子(一)
  4. python数据清洗代码_8段用于数据清洗Python代码(小结)
  5. postgresql9.5.9相关的日志文件介绍
  6. ubuntu 多终端窗口管理: terminator
  7. 大前端-全栈-node+easyui+express+vue+es6+webpack+react
  8. 传智播客 朴素贝叶斯 算法评估 交叉验证与网格搜索 学习
  9. 微信红包惊人秘密:谁最容易抢到大红包?
  10. [设计一个24GHz微带天线]书本公式介绍并用Octave计算初始值
  11. CAD二次开发--ZOOM自定义缩放到视口区域,解决SelectCrossingWindow等方法对视口外实体不起作用的问题
  12. 硬件设备使用网线连接PC并访问外网
  13. 用关键词搜索店铺列表详情
  14. 关于短网址短链接生成的算法问题
  15. 职场技巧之PPT制作
  16. 微信开发者工具更换存储目录将C盘数据User Data迁移到D盘
  17. php 后缀文件怎么打开,php是什么文件格式,php扩展名文件如何打开?
  18. Nutanix 在 2020 .NEXT 大会推出 Kubernetes 平台即服务产品
  19. linux进程 ppt,Linux进程调度的演讲PPT分享
  20. FEQ编译(Full Equations Flow Routing Model)

热门文章

  1. Wireshark 常用过滤
  2. kmemleak的使用
  3. Trie图的学习过程
  4. EditPlus for python
  5. 7.剑指Offer --- 两个面试案例
  6. 4.nslookup
  7. 6. Zend Studio
  8. 8086的两种工作模式_在线式UPS工作模式
  9. css中的@符号的用处
  10. [2019杭电多校第二场][hdu6599]I Love Palindrome String(回文自动机hash)