在前面文章中,我分别和你介绍了 sort buffer、内存临时表和 join buffer。这三个数据结构都是用来存放语句执行过程中的中间数据,以辅助 SQL 语句的执行的。其中,我们在排序的时候用到了 sort buffer,在使用 join 语句的时候用到了 join buffer。

然后,你可能会有这样的疑问,MySQL 什么时候会使用内部临时表呢?

今天这篇文章,我就先给你举两个需要用到内部临时表的例子,来看看内部临时表是怎么工作的。然后,我们再来分析,什么情况下会使用内部临时表。

union 执行流程

为了便于量化分析,我用下面的表 t1 来举例。

create table t1(id int primary key, a int, b int, index(a));
delimiter ;;
create procedure idata()
begin
declare i int;

set i=1;
while(i<=1000)do
insert into t1 values(i, i, i);
set i=i+1;
end while;
end;;
delimiter ;
call idata();

然后,我们执行下面这条语句:

(select 1000 as f) union (select id from t1 order by id desc limit 2);

这条语句用到了 union,它的语义是,取这两个子查询结果的并集。并集的意思就是这两个集合加起来,重复的行只保留一行。

下图是这个语句的 explain 结果。

什么时候会使用内部临时表?相关推荐

  1. MySQL 中的myisam内部临时表

    摘要: 本文只是记录一下验证过程,源码比较复杂,时间有限没仔细读过.如有误导请见谅. 源码版本 percona 5.7.14 一.问题由来 一个朋友问我下面的tmp目录的文件是干什么的,一会就删除了. ...

  2. mysql 临时表_第05问:MySQL 在处理临时结果集时,内部临时表会使用多少内存?...

    问题: MySQL 在处理临时结果集(UNION 运算 / 聚合运算等)时,会用到内部临时表(internal temporary table). 那么内部临时表会使用多少内存呢? 实验: 我们先创建 ...

  3. mysql 内部 临时表_MySQL内部临时表何时使用磁盘

    问题: 在 实验 05中,我们看到了内部临时表会使用到不少内存. 那么如果需要的临时表再大一些,必然要使用到磁盘来承载,那么内部临时表是何时使用磁盘的? 实验: 我们仍使用 实验 05中的环境,略去准 ...

  4. mysql 内部 临时表_MySQL内部临时表策略 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    1H#dGTog4r5J6H0通过对源码的跟踪和调试,以及参考MySQL官方文档,对MySQL内部临时表使用策略进行整理,以便于更加深入的理解.#D4s,PXr9k_2S051Testing软件测试网 ...

  5. mysql temporary_MySQL内部临时表(Internal Temporary Table)

    当某些SQL命令在MySQL数据库中被执行的时候,它可能需要先创建一些内部的临时表来完成比较复杂的排序或分组查询.MySQL的临时表分为 in-memory 和 on-disk 两种. 如有可能,My ...

  6. 37 | MySQL的内部临时表使用场景?(Group by语句使用注意事项)

    一.前言 在执行语句时候,记得多"食用"explian看看语句性能如何? create table t1(id int primary key, a int, b int, ind ...

  7. MySQL内部临时表的具体使用

    文章来源: 学习通http://www.bdgxy.com/ 目录 UNION 表初始化 执行语句 UNION RESULT UNION ALL GROUP BY 内存充足 执行语句 执行过程 排序过 ...

  8. MySQL 内部 临时表 图文 详解

    MySQL 内部 临时表 图文 详解 文章目录 MySQL 内部 临时表 图文 详解 1. 准备工作 2. 哪些场景会用到临时表? 3. 临时表用哪种存储引擎? 4. 内存临时表变磁盘临时表 5. 写 ...

  9. mysql count 排序_MySQL什么时候会使用内部临时表?

    1.union执行过程 首先我们创建一个表t1 create table t1(id int primary key, a int, b int, index(a));delimiter ;;crea ...

最新文章

  1. [Java实现] 图片择优(选择最清楚的图片)
  2. 关于java中Math的一些用法
  3. 可恶,新网互联又出问题了
  4. 【caffe-Windows】mnist实例编译之model的使用-classification
  5. SAP服务器性能管理常用的功能解析
  6. OpenResty快速入门
  7. Javaweb学习笔记——(二十二)——————文件上传、下载、Javamail
  8. win10 利用安装包 安装 ssh
  9. android把js的注入和方法统一管理,android WebView 注入js 几种方式
  10. FP-growth算法原理解析
  11. 【JDK】win 10 / win 11:jdk 8 下载、安装、配置、验证
  12. android PackageInstaller那点事情
  13. 图神经网络入门:GCN论文+源码超级详细注释讲解!
  14. 设计模式之访问者模式(C# / JavaScript / PHP / Java / Python 演示代码)
  15. 七月算法-P2 概率论与数理统计(1)
  16. Infor宣布首次公开募股
  17. 什么是socket通信
  18. 新书推荐 | 数据流机器学习:MOA实例
  19. 微博,要再造一个“微博”?
  20. 文件夹里的文件怎么批量打印呢?

热门文章

  1. UE4 射击游戏(游戏机制完善中)
  2. 请论述东西方绘画的区别
  3. AJAX 异步请求数据
  4. python turtle画彩虹的代码_Python使用turtle绘制国旗,Python图片转换位字符画
  5. python win32教程_pywin32 简易入门(转)
  6. 【现代密码学原理】——高级加密标准AES(学习笔记)
  7. over在SQL里就什么意思
  8. me shy是什么歌 抖音make_抖音shy是什么音乐
  9. 7、C++各大有名库的介绍——游戏开发
  10. Mysql数据库常用语句——创建数据库/表