返回顶部
首页 > 资讯 > 数据库 >MySQL中什么情况下需要用到临时表
  • 653
分享到

MySQL中什么情况下需要用到临时表

2024-04-02 19:04:59 653人浏览 薄情痞子
摘要

这篇文章主要介绍Mysql中什么情况下需要用到临时表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!临时表介绍什么是临时表:mysql用于存储一些中间结果集的表,临时表只在当前连接可见

这篇文章主要介绍Mysql中什么情况下需要用到临时表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

临时表介绍

什么是临时表: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中什么情况下需要用到临时表”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中什么情况下需要用到临时表

本文链接: https://lsjlt.com/news/57669.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL中什么情况下需要用到临时表
    这篇文章主要介绍MySQL中什么情况下需要用到临时表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!临时表介绍什么是临时表:MySQL用于存储一些中间结果集的表,临时表只在当前连接可见...
    99+
    2024-04-02
  • 在什么情况下会使用mysql临时表
    这篇文章主要介绍在什么情况下会使用mysql临时表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL在很多情况下都会用到临时表,总结一下什么时候会用到临时表:什么是临时表:My...
    99+
    2024-04-02
  • 浅谈Mysql在什么情况下会使用内部临时表
    union执行 为了便于分析,使用一下sql来进行举例 CREATE TABLE t1 ( id INT PRIMARY KEY, a INT, b INT, IN...
    99+
    2024-04-02
  • 什么情况下需要使用redis
    这篇文章给大家分享的是有关什么情况下需要使用redis的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。redis是一个key-value存储系统。和Memcached类似,它支持存...
    99+
    2024-04-02
  • MySQL数据库中什么情况下需要使用索引
    这篇文章主要介绍MySQL数据库中什么情况下需要使用索引,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么情况下需要使用索引(1)列经常被用于where条件中(2)列中有大...
    99+
    2024-04-02
  • 数据库中在什么情况下需要用分库分表
    这篇文章主要介绍数据库中在什么情况下需要用分库分表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据量在什么情况下需要分表?为了保证数据库的查询效率,当数据达成一定量时建议进行分表操作1、oracle当oracle单...
    99+
    2023-06-14
  • 什么情况下需要使用SPFA 算法
    什么情况下需要使用SPFA 算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-F...
    99+
    2023-05-31
    spfa算法 情况下
  • 什么情况下要用到vps主机
    要用到vps主机的情况有:1、网站出现大量的流量时要使用vps主机,能保证网站上拥有大量的适当的资源和较快的访问速度;2、想要一些自定义的控制权需求时要使用vps主机,能按自己的需求去改变或增加一些其他的内容;3、网站需要支持很多种不同的应...
    99+
    2024-04-02
  • 小程序什么情况下需要SSL
    小程序在任何情况下都需要SSL,原因如下:用户在进行交易时,使用SSL才可以保证交易信息安全。移动数据发展任何应用都需要进行加密传输。可以对服务器端校验,防止数据被窃听、篡改、冒充。...
    99+
    2024-04-02
  • mysql什么情况下会锁表
    在MySQL中,当对表进行写操作(如INSERT、UPDATE、DELETE)时,需要对相关的数据行加锁以确保数据的一致性和完整性。在某些情况下,MySQL需要锁定整个表而不是部分行,这种情况下会锁定整个表,导致其他会话不能访问表。 使用A...
    99+
    2023-08-17
    mysql java
  • 数据库分库分表是什么,什么情况下需要用分库分表
    目录数据量在什么情况下需要分表?1、oracle2、mysql3、sqlserver分库分表是什么,什么情况下需要用分库分表1、什么是分库分表?2、什么情况下需要分库分表?3、分库分...
    99+
    2024-04-02
  • 云服务器什么情况下需要备案
    使用国内空间的云服务器,必须进行备案;服务器使用非国内IP地址的服务器无需备案,使用国内IP的服务器则需要备案;如果将服务器域名解析到国内空间,必须要进行备案;但服务器域名解析到海外或香港的空间,就不需要备案;...
    99+
    2024-04-02
  • VB.NET共享成员需要在什么情况下使用
    本篇内容介绍了“VB.NET共享成员需要在什么情况下使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!VB.NET作为一款优秀的面向对象语言...
    99+
    2023-06-17
  • mysql中临时表指的是什么
    这篇文章主要介绍了mysql中临时表指的是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。临时表是MySQL用于存储一些中间结果集的表,临时表...
    99+
    2024-04-02
  • MySQL中什么情况下进行sql优化
    这篇文章主要介绍MySQL中什么情况下进行sql优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql优化简介1、什么情况下进行sql优化性能低、执行时间太长、等待时间太长、连接查询、索引失效。2、sql语句执行过...
    99+
    2023-06-27
  • mysql临时表的作用是什么
    今天小编给大家分享一下mysql临时表的作用是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-05-25
    mysql
  • MySQL中的分区表和临时表是什么
    这篇文章主要为大家展示了“MySQL中的分区表和临时表是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中的分区表和临时表是什么”这篇文章吧。临时表...
    99+
    2024-04-02
  • 怎么在mysql中使用临时表
    这篇文章将为大家详细讲解有关怎么在mysql中使用临时表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、创建临时表可以将查询结果寄存(1)关于寄存方式,m...
    99+
    2024-04-02
  • java中什么情况下使用ArrayList和LinkedList?
    什么情况用ArrayList or LinkedList呢ArrayList 和 LinkedList 是 Java 集合框架中用来存储对象引用列表的两个类。ArrayList 和 LinkedList 都实现 List 接口。先对List...
    99+
    2016-08-06
    java教程 ArrayList LinkedList
  • mysql临时表的使用方法是什么
    在MySQL中,临时表是一种特殊类型的表,它只在当前会话中存在并且在会话结束时会自动被销毁。临时表对于临时存储中间结果或者处理大量数...
    99+
    2024-04-09
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作