0

0

MySQL内部临时表(Internal Temporary Table)

php中文网

php中文网

发布时间:2016-06-07 17:21:14

|

1703人浏览过

|

来源于php中文网

原创

当某些SQL命令在MySQL数据库中被执行的时候,它可能需要先创建一些内部的临时表来完成比较复杂的排序或分组查询。MySQL的临时表分

当某些sql命令在mysql数据库中被执行的时候,它可能需要先创建一些内部的临时表来完成比较复杂的排序或分组查询。mysql的临时表分为 in-memory 和 on-disk 两种。 如有可能,mysql 总是首先使用 in-memory 的临时表, 而当临时表变得太大的时候,也可能被转存为on-disk 的临时表。

如下几个条件下可能导致SQL命令需要创建临时表:

  * 使用了不同的 ORDER BY 和 GROUP BY 条件,或它们包含了JOIN查询中非首先表的字段;
  * 同时使用了DISTINCT和ORDER BY;
  * 如果SQL命令使用了SQL_SMALL_RESULT选项,,那么需要时将创建in-memory临时表,除非
    查询中还包含有需用 on-disk 存储的元素;

一些条件下可能阻碍使用in-memory临时表, 导致MySQL改用on-disk临时表:

  * 数据表中含有BLOB类型或TEXT类型字段列;
  * 在GROUP BY或DISTINCT任何条件中含有超过512字节的列;
  * 如果使用了UNION或UNION ALL,而且SELECT列中含有任何超过512字节的列;
  * 如果in-memory临时表变得太大,超过tmp_table_size或max_heap_table_size数值时;

MySQL数据库用Created_tmp_tables和Created_tmp_disk_tables变量记录所用临时表的数目;

关于MySQL内部临时表(internal temporary table)的优化:

(1) 首先,应该尽可能考虑如何避免您的SQL命令创建临时表;

对于一个查询连接非常繁忙的数据库,频繁地使用需要创建临时表的查询本身就已经是一个性能瓶颈。作为一个 DBA,您需要重新检视您的数据表的结构以及各表之间的关联, 重新考虑主键和索引,重组数据结构以减少应用中需不同的ORDER BY和GROUP BY的情况。
作为一个程序员,您则可能需要重新分析您的应用需求, 设法简化SQL命令的复杂程度,例如,尽可能将单次的多层关联查询,拆分为较少关联层次的多次查询,或使用View表。

百度文心百中
百度文心百中

百度大模型语义搜索体验中心

下载

(2) 其次,应该尽量设法确保临时表被创建于内存而非磁盘之中;

如果实在是无法避免创建临时表,那么退而求其次,则需要尽量确保这些临时表能够被创建在内存之中。避免在结构设计和查询命令中使用BLOB和TEXT类型字段,或可考虑用 SUBSTRRING(colum,length)函数将其转换为字符串类型;用SQL_SMALL_RESULT选项通知数据库使用in-memory临时表;使用View来简化查询;使用RAM disk内存盘来存储MySQL 数据库的临时表(需确保无使用BLOB和TEXT字段)。

如何避免 On-Disk Temporary Tables

因为 Memory 存储引擎不支持 BLOB和TEXT 类型,所以包含有 BLOB和TEXT 类型字段的查询,当它需要用到隐式临时表(implicit temporary table)的时候,就不得不使用 on-disk的MyISAM临时表,即使它的查询结果可能只有很简单的几行数据。

这会导致一个严重的性能瓶颈,即使您能配置将MySQL的临时表存储到RAM disk上,依然还是会需要用到许多昂贵的操作系统的调用函数。 在实用中还发现,某些SQL语句的临时表甚至根本连RAM disk都不能使用(此时SQL查询命令会因为不能创建临时表而失败)。

The best solution is to avoid using the BLOB and TEXT types unless you really need them.
If you can't avoid them, you may be able to use the ORDER BY SUBSTRRING(colum,length)
trick to convert the values to character strings. wihich will permit in-memory temporary
tables.

Just be sure that you are using a short engough substring that the temporary table
doesn't grow larger than max_heap_table_size or tmp_table_size, or MySQL will convert
the table to an on-disk MyISAM table.

If the Extra column of EXPLAIN contains "Using temporary",
the query uses an implicit temporary table.

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

28

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

8

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

31

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

35

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

12

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

40

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

7

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.5万人学习

前端进阶之JavaScript设计模式
前端进阶之JavaScript设计模式

共22课时 | 1.9万人学习

PHP与Ajax极速入门
PHP与Ajax极速入门

共8课时 | 11.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号