mysql中什么时候用临时表

mysql中用临时表的时候:1、用到TEMPTABLE算法或者是UNION查询中的视图时;2、用到DISTINCT查询并且加上ORDER BY时;3、SQL中用到“SQL_SMALL_RESULT”选项时;4、用到FROM中的子查询时等等。

mysql中什么时候用临时表

本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。

mysql中什么时候用临时表

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 就表示会用到临时表。

ViiTor实时翻译 ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116 查看详情 ViiTor实时翻译

当然了,如果临时表中需要存储的数据量超过了上限( 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,不要把这二者混淆了。

见下例:

55.png

推荐学习:mysql视频教程

以上就是mysql中什么时候用临时表的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/282103.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
国内首个短剧创作大模型开源了,一个人就能拍短剧,单卡80秒出大片
上一篇 2026年10月18日 09:36:35
win10无法使用文件历史记录功能备份文件怎么办_恢复文件历史记录备份功能的方法
下一篇 2025年12月5日 02:39:53

相关推荐

  • mysql中怎么修改collation

    mysql中怎么修改collationmysql中怎么修改collationmysql中怎么修改collationmysql中怎么修改collation

    方法:1、设置“my.cnf”文件,在mysqld下面添加“character_set_server=修改后的内容”和“collation_server=修改后的内容”;2、利用“systemctl restart mysqld”重启即可。 本教程操作环境:windows10系统、mysql8.0.…

    2026年10月18日 • 用户投稿
    000
  • 高效分割论坛讨论:Flarum 扩展 fof/split 的使用指南

    作为一名 flarum 论坛管理员,我经常面临一个难题:一些讨论串会因为话题的延伸而变得极其冗长,包含了多个互不相关的子话题。 这使得新用户难以参与讨论,也让老用户难以找到他们感兴趣的信息。 最初,我尝试通过人工整理和手动创建新主题来解决这个问题,但这既费时费力,又容易出错,而且很难保证信息的完整性…

    2026年10月18日
    000
  • mysql怎么判断索引是否存在

    mysql怎么判断索引是否存在mysql怎么判断索引是否存在mysql怎么判断索引是否存在mysql怎么判断索引是否存在

    在mysql中,可以利用SHOW INDEX语句判断索引是否存在,该语句可以查看表中创建的索引,若索引存在则结果会显示出来,语法为“SHOW INDEX FROM 表名  FROM 数据库名”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql怎么…

    2026年10月18日 • 用户投稿
    000
  • mysql中有嵌套查询语句吗

    mysql中有嵌套查询语句吗mysql中有嵌套查询语句吗mysql中有嵌套查询语句吗mysql中有嵌套查询语句吗

    mysql中有嵌套查询语句,语法为“SELECT语句 WHERE 条件(SELECT语句)”;该语句也被称为子查询语句,能够在已有的查询语句中的where后面再嵌套一层查询语句,也即将内层查询结果当做外层查询参照的数据来使用。 本教程操作环境:windows10系统、mysql8.0.22版本、De…

    2026年10月18日 • 用户投稿
    100
  • 怎么判断mysql数据库是否存在

    怎么判断mysql数据库是否存在怎么判断mysql数据库是否存在怎么判断mysql数据库是否存在怎么判断mysql数据库是否存在

    方法:1、用“show databases like ‘数据库名称’”语句判断;2、用“SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = ‘数据库名称’”语句判断。 本教程操作环…

    2026年10月18日 • 用户投稿
    000
  • mysql中怎么创建数据表格 mysql数据表创建方法详解

    在 %ign%ignore_a_1%re_a_1% 中创建数据表的步骤包括:1) 使用 create table 语句定义表结构;2) 选择合适的数据类型,如 int、varchar 等;3) 设置字段属性,如 auto_increment、not null、unique;4) 创建索引以优化查询性…

    2026年10月18日
    100
  • mysql中in会用索引吗

    mysql中in会用索引吗mysql中in会用索引吗mysql中in会用索引吗mysql中in会用索引吗

    mysql中in是否会用索引的两种情况:1、当in的取值范围较小时,in会走索引;2、当in的取值范围较大时,in不走索引,而是会用全表扫描。因为in的条件过多时,返回的数据就会很多,可能会导致应用堆内内存溢出,导致索引失效。 本教程操作环境:windows10系统、mysql8.0.22版本、De…

    2026年10月18日 • 用户投稿
    000
  • mysql数据库怎么设为只读

    mysql数据库怎么设为只读mysql数据库怎么设为只读mysql数据库怎么设为只读mysql数据库怎么设为只读

    在mysql中,可利用set global将数据库设置为只读,语法为“set global read_only=1”;该语句需要在有root权限的用户下才能执行,若需要取消只读权限,只需利用该语句将“read_only”的值设置为0即可。 本教程操作环境:windows10系统、mysql8.0.2…

    2026年10月18日 • 用户投稿
    100
  • mysql查询是否区分大小写

    mysql查询是否区分大小写mysql查询是否区分大小写mysql查询是否区分大小写mysql查询是否区分大小写

    mysql的默认查询是不区分大小写的;如果需要区分大小写,可以利用Binary关键字在查询时设置查询语句区分大小写,语法为“select * from 表名 WHERE binary 字段=字段值”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysq…

    2026年10月18日 • 用户投稿
    000
  • mysql索引有什么用

    mysql索引有什么用mysql索引有什么用mysql索引有什么用mysql索引有什么用

    在mysql中,索引可以用来快速查询数据表中有某一特定值的记录,大大加快数据的查询速度;在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。如果表中查询的列有一个索引,MySQL就能快速到达一个位置去搜索数据文件,而不必查看所有数据,这样将会节省很大一…

    2026年10月18日 • 用户投稿
    000
  • JPA动态SQL中使用IFNULL()的性能问题与更好替代方案是什么

    JPA动态SQL中使用IFNULL()的性能问题与更好替代方案是什么JPA动态SQL中使用IFNULL()的性能问题与更好替代方案是什么JPA动态SQL中使用IFNULL()的性能问题与更好替代方案是什么JPA动态SQL中使用IFNULL()的性能问题与更好替代方案是什么

    JPA动态SQL:提升IFNULL()效率的策略 在构建JPA动态多表联结查询时,一些开发者习惯使用IFNULL(NULLIF(?1, ”), ‘xxx字段’)处理空参数。然而,这种方法存在性能隐患:MySQL数据库需要额外计算IFNULL()和NULLIF()函数,增加CPU负载,降低查询效率。…

    2026年10月18日 • 用户投稿
    100
  • 精选归纳15个Mysql优化问题

    精选归纳15个Mysql优化问题精选归纳15个Mysql优化问题精选归纳15个Mysql优化问题精选归纳15个Mysql优化问题

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于sql优化的相关问题,包括了在开发过程中是怎么排查sql语句、怎么排查生产环境sql问题等等内容,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 开发过程如何排查SQL? 排查思路 对于大部分程序员来说,在开发过程中…

    2026年10月18日 • 用户投稿
    300
  • mysql存储过程的优缺点是什么

    mysql存储过程的优缺点是什么mysql存储过程的优缺点是什么mysql存储过程的优缺点是什么mysql存储过程的优缺点是什么

    优点:1、有助于提高应用程序的性能;2、有助于减少应用程序和数据库服务器之间的流量;3、对任何应用程序都是可重用且透明的;4、可提高数据库的安全性和数据的完整性;5、可使数据独立。缺点:1、如果使用许多存储过程,则使用这些存储过程的每个连接的内存使用量将显着增加;2、存储过程的构造不是为开发复杂和灵…

    2026年10月18日 • 用户投稿
    200
  • MySQL中IFNULL和NULLIF函数的使用:性能与逻辑错误的风险?

    MySQL中IFNULL和NULLIF函数的使用:性能与逻辑错误的风险?MySQL中IFNULL和NULLIF函数的使用:性能与逻辑错误的风险?MySQL中IFNULL和NULLIF函数的使用:性能与逻辑错误的风险?MySQL中IFNULL和NULLIF函数的使用:性能与逻辑错误的风险?

    MySQL IFNULL 和 NULLIF 函数的性能与逻辑风险 在MySQL数据库中,IFNULL 和 NULLIF 函数常用于处理空值,尤其在动态SQL语句中。然而,这种用法可能带来性能和逻辑问题。 动态SQL语句中的潜在问题 许多开发者在多表联结查询时,为了简化动态SQL的构建,会使用类似这样…

    2026年10月18日 • 用户投稿
    500
  • MySQL中聚合函数汇总 聚合函数在统计查询中的实际案例

    要统计记录数量用count()函数,计算总和与平均值用sum()和avg(),查找极值用max()和min(),结合group by实现分组统计。1. count(*)统计所有行,count(字段名)仅统计非null值;2. sum(字段)求总和,avg(字段)求平均值,仅适用于数值型;3. max…

    2026年10月18日
    400
  • mysql怎么取消所有权限

    mysql怎么取消所有权限mysql怎么取消所有权限mysql怎么取消所有权限mysql怎么取消所有权限

    在mysql中,可以使用REVOKE语句来删除指定用户的权限(指定权限或所有权限),取消所有权限的语法为“REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户;”。要想REVOKE语句生效,必须拥有MySQL数据库的全局CREATE USER权限或UPDATE权限。…

    2026年10月18日 • 用户投稿
    200
  • mysql怎么将时分秒转换成秒数

    mysql怎么将时分秒转换成秒数mysql怎么将时分秒转换成秒数mysql怎么将时分秒转换成秒数mysql怎么将时分秒转换成秒数

    在mysql中,可以使用TIME_TO_SEC()函数将时分秒转换成秒数,语法为“TIME_TO_SEC(“时:分:秒”)”。TIME_TO_SEC()函数会接受一个时间值作为参数,并将该参数转换为秒数,转换公式为“(小时×3600)+(分钟×60)+秒”。 本教程操作环境:…

    2026年10月18日 • 用户投稿
    100
  • mysql怎么将秒数转换成时分秒

    mysql怎么将秒数转换成时分秒mysql怎么将秒数转换成时分秒mysql怎么将秒数转换成时分秒mysql怎么将秒数转换成时分秒

    在mysql中,可以使用SEC_TO_TIME()函数将秒数转换成时分秒,语法“SEC_TO_TIME(seconds)”;SEC_TO_TIME()函数会以当天“00:00:00”为基点将指定秒数“seconds”转换为小时、分钟和秒数的时间值,并以“hh:ii:ss”的时间格式进行返回。 本教程…

    2026年10月18日 • 用户投稿
    100
  • mysql中order by怎么用

    mysql中order by怎么用mysql中order by怎么用mysql中order by怎么用mysql中order by怎么用

    mysql中“order by”关键字主要用来将查询结果中的数据按照一定的顺序进行排序,使用语法“ORDER BY 字段名 [ASC|DESC]”;“ASC”是默认值,表示字段按升序排序,“DESC”表示字段按降序排序。“ORDER BY”指定多个字段进行排序时,多个字段名间用逗号隔开,会按照字段的…

    2026年10月18日 • 用户投稿
    200
  • mysql怎么修改字段的内容

    mysql怎么修改字段的内容mysql怎么修改字段的内容mysql怎么修改字段的内容mysql怎么修改字段的内容

    在mysql中,可以使用UPDATE语句来修改字段内容,该语句可以更新多个字段的内容,只需要在关键字SET后面指定要修改的字段名称和新值,不同字段之间用逗号“,”分隔开即可,语法为“UPDATE 表名 SET 字段名1=新值1 [,字段名2=新值2…] [WHERE子句]”。“WHERE子句”用于指…

    2026年10月18日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信