mysql创建临时表(mysql创建临时表语句)

本篇文章给大家谈谈mysql创建临时表,以及mysql创建临时表语句对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

mysql数据库怎么把查询出来的数据生成临时表

MySQL 需要创建隐式临时表来解决某些类型的查询。往往查询的排序阶段需要依赖临时表。例如,当您腔友使用 GROUP BY,ORDER BY 或DISTINCT 时。这样的查询分两个阶段执行:首先是收集数据并将它们放入临时表中,然后是在临时表上执行排序。

对于某些 UNION 语句,不能合并的 VIEW,子查询时用到派生表,多表 UPDATE 以及其他一些情况,还需要使用临时表。如果临时表很小,可以到内存中创建,否则它将在磁盘上创建。MySQL 在内存中创建了一个表,如果它变得太大,就会被转换为磁盘上存储。内存临竖圆手时表的最大值由 tmp_table_size 或 max_heap_table_size 值余嫌定义,以较小者为准。MySQL 5.7 中的默认大小为 16MB。如果运行查询的数据量较大,或者尚未查询优化,则可以增加该值。设置阈值时,请考虑可用的 RAM 大小以及峰值期间的并发连接数。你无法无限期地增加变量,因为在某些时候你需要让 MySQL 使用磁盘上的临时表。

注意:如果涉及的表具有 TEXT 或 BLOB 列,则即使大小小于配置的阈值,也会在磁盘上创建临时表。

[img]

技术分享 | 浅谈 MySQL 的临时表和临时文件

本文内容来源唤团橘于对客户的三个问题的思考:

以下测试都是在 MySQL 8.0.21 版本中完成,不同版本可能存在差异,可自行测试;

临时表和临时文件都是用于临时存放数据集的地方;

一般情况下,需要临时存放在临时表或临时文件中的数据集应该符合以下特点:

从临时表|临时文件产生的主观性来看,分为2类:

用户创建临时表:

  -- 用户创建临时表(只有创建临时表的会话才能查看其创建的临时表的内容)

  注意:

  可以创建和普通表同名临时表,其他会话可以看到普通表(因为看不到其他会话创建的临时表);

  创建临时表的会话会优先看到临时表;

  -- 同名表的创建的语句如下

  当存在同名的临时表时,会话都是优先处理临时表(而不是普通表),包括:select、update、delete、drop、alter 等操作;

查看用户创建的临时表:

  任何 session 都可以执行下面的语句;

  查看用户创建的当前 active 的临时表(不提供 optimizer 使用的内部 InnoDB 临时表信息)

  注意

  用户创建的临时表,表名为t1,

  但是通过 INNODB_TEMP_TABLE_INFO 查看到的临时表的 NAME 是#sql开头的名字,例如:#sql45aa_7c69_2 ;

  另外 information_schema.tables 表中是不会记录临时表的信息的。

用户创建的临时表的回收:

用户创建的临时表的其他信息参数:

  会话临时表空间存储 用户创建的临时表和优化器 optimizer 创建的内部临时表(当磁盘内部临时表的存储引擎为 InnoDB 时);

  innodb_temp_tablespaces_dir 变量定义了创建 会话临时表空间的位置,默认是数据目录下的#innodb_temp 目录;

  文件类似temp_[1-20].ibt ;

  查看会话临时表空间的元数据或镇:

  用户创建的临时表删除后,其占用的空间会被释放(temp_[1-20].ibt文件会变小)。

  在 MySQL 8.0.16 之前,internal_tmp_disk_storage_engine 变量定义了用户创建的临时表和 optimizer 创建的内部临时表的引擎,可选 INNODB 和 MYISAM ;

  从 MySQL 8.0.16 开始,internal_tmp_disk_storage_engine参数被移除,默认使用InnoDB存储引擎;

  innodb_temp_data_file_path 定义了用户创建的临时表使用的回滚段的存储文件的相对路径、名字、大小和属性,该文件是全局临时表空间(ibtmp1);

  可以使用语句查询全局临时表空间的数据文件大小:

SQL 什么时候产生临时表|临时文件呢?

  需要用到临时表或临时文件的时候,optimizer 自然会创建使用(感觉是废话,但是又觉得有道理=.=!);

  (想象能力强的,可以牢记上面这句话;想象能力弱的,只能死记下面的 SQL 了。我也弱,此处有个疲惫的微笑

相关阅读

  • mssqlserver(mssqlserver怎么安装)

    mssqlserver(mssqlserver怎么安装)

    简介:MSSQL Server是由微软公司开发的一种关系型数据库管理系统,是在Windows操作系统上运行的数据库服务器。它旨在提供可靠性、高性能和安全性,被广泛应用于企业级应用程序和网站开发中。多级标题:一、MSSQL Server的特点...

    2024.04.22 22:38:00作者:intanet.cnTags:mssqlserver
  • js转json(js转json在线)

    js转json(js转json在线)

    **简介**在IT技术领域中,JavaScript(简称JS)是一种常用的脚本语言,用于网页开发和编程。JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,常用于存储和传输数据。本文将讨论如何将Ja...

    2024.04.22 22:23:30作者:intanet.cnTags:js转json
  • 数据库有那些(数据库有哪些索引)

    数据库有那些(数据库有哪些索引)

    一、简介数据库是计算机中用于存储和管理数据的系统,是信息系统中最重要的组成部分之一。数据库技术在信息化时代发挥着重要作用,广泛应用于各行各业。数据库的种类有很多,每种都有其特点和适用场景。下面将介绍一些常见的数据库类型。二、关系数据库1....

    2024.04.22 22:14:00作者:intanet.cnTags:数据库有那些
  • 关于sparksqlsplit的信息

    关于sparksqlsplit的信息

    简介:作为一种基于内存的分布式数据处理框架,Spark SQL使得数据分析更加高效和灵活。而在Spark SQL中,split函数是非常常用的函数,用于将字符串通过指定的分隔符进行拆分。本文将详细介绍sparksqlsplit函数的用法和示...

    2024.04.22 22:13:30作者:intanet.cnTags:sparksqlsplit
  • 数据的处理方法(实验数据的处理方法)

    数据的处理方法(实验数据的处理方法)

    在当今数字化时代,数据处理变得越发重要。从企业管理到科研领域,人们需要处理大量的数据以获取有价值的信息。本文将介绍一些常见的数据处理方法,帮助读者更好地理解和应用数据处理技术。# 传统数据处理方法传统数据处理方法主要包括数据录入、数据清洗、...

    2024.04.22 22:09:30作者:intanet.cnTags:数据的处理方法
  • mongodb和hbase(mongodb和hbase性能)

    mongodb和hbase(mongodb和hbase性能)

    MongoDB和HBase是两种流行的NoSQL数据库系统,它们在处理大规模数据和高并发访问方面都有很好的表现。本文将对MongoDB和HBase进行比较和分析,以帮助读者了解它们各自的优缺点和适用场景。# 一、MongoDB介绍Mongo...

    2024.04.22 22:00:00作者:intanet.cnTags:mongodb和hbase
  • mysql转sqlserver(MySQL转sqlserver数据库)

    mysql转sqlserver(MySQL转sqlserver数据库)

    **简介**将MySQL数据库转移到SQL Server数据库是常见的需求,因为有时候企业需要更稳定、更强大的数据库管理系统来满足数据需求。在本文中,我们将详细讨论如何将MySQL数据库成功转移到SQL Server数据库。**准备工作**...

    2024.04.22 21:45:30作者:intanet.cnTags:mysql转sqlserver
  • 数据库的建立(数据库的建立与维护实验心得)

    数据库的建立(数据库的建立与维护实验心得)

    标题:数据库的建立简介:数据库是指在计算机系统中,用于存储和管理数据的系统。在IT技术领域,数据库起着至关重要的作用,它可以帮助我们更好地组织和管理数据,提高数据的访问效率和安全性。下面将详细介绍数据库的建立过程和相关知识。一、数据库类型1...

    2024.04.22 21:30:00作者:intanet.cnTags:数据库的建立