一、MySQL如何使用内部临时表?

在某些情况下,服务器会在处理query的时候组建内部临时表,这种表有两种存在形式:

1)、位于内存中,使用的是MEMORY存储引擎(内存临时表)

2)、位于磁盘上,使用MyISAM存储引擎(硬盘临时表)

服务器可能在最初创建的是内存临时表,之后当其变大到一定程度时再转变为磁盘临时表。对于

服务器什么时候创建内部临时表或者临时表使用哪种存储引擎,用户不能直接控制。

二、那么服务器创建临时表的场景有哪些呢?

1、order by子句和group by子句不同

例如:order by price group by

name

2、在多表联合查询中,order by或者group

by使用了不是第一个表的列

例如:select * from T1,T2 order by

T1.price group by T2.name

3、order by中使用了distinct关键字

例如:order by distinct(price)

4、from语句中的子查询产生的派生表

5、select

语句中指定了SQL_SMALL_RESULT关键字

SQL_SAMLL_RESULT的意思是告诉MySQL,结果会很小,请直接使用内存临时表

SQL_SAMLL_RESULT必须和GROUP

BY、DISTINCT或者DISTINCTROW一起使用

一般情况下,我们都不会使用SQL_SAMLL_RESULT这个选项,让服务器自己选择即可。

三、临时表的相关配置参数

1)、tmp_table_size:指定系统创建的内存临时表最大大小;

2)、max_heap_table_size:指定用户创建的内存表最大大小;

注意:最终系统创建的内存临时表大小是取上述两个配置值中的最小值。

服务器最初创建的是内存临时表,后面当其变大到一定程度时再转变为磁盘临时表。

由服务器创建的内部临时表和通过create

table显示创建的memory内存表是不同的。

对于使用create table

显示创建的memory内存表允许的大小是由max_heap_table_size

决定的。

当服务器创建了内部临时表(无论是在内存中的还是在磁盘上的),状态变量created_tmp_tables

值都会增加。如果服务器创建了临时表在磁盘上(无论是初始创建在磁盘还是后来转化到磁盘),

状态变量created_tmp_disk_tables的值都会增加。

四、MySQL复制和临时表temporary table

1)、用户创建临时表需要有create temporary

table权限,使用temporary关键字。如:

create temporary table

tmp_table(name varchar(10) not null,sex char(1) not null);

2)、create temporary

table这种方式创建的临时表只在当前连接可见,当这个连接关闭的时候,会自动drop掉。

这意味着你可以在两个不同的连接里使用相同的临时表名,并且相互不会冲突。

你也可以创建一个和当前存在的非临时表的表名字一样的临时表,当临时表存在的时候,存在的非临时表会被隐藏,

如果临时表被drop了,那么存在的非临时表就可见了。

五、临时表的限制

1)、临时表只能用在memory、myisam、merge或者innodb存储引擎中;

2)、临时表不支持mysql cluster;

3)、在同一个query中,你只能查找一次临时表,例如:

select * from temp_table,temp_table

AS t2;

会产生报错:can't reopen

table:'temp_table'

4)、show tables不能显示出临时表;

5)、不能使用rename重命名临时表,可以使用alter

table来替代:

alter table T1 RENAME T2

mysql 临时表权限_MySQL临时表浅析相关推荐

  1. windows 新建mysql权限设置_Windows下设置MySQL安全权限_mysql

    注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改. 文中提及的权限都是在原有权限上附加的权限. [修改步骤] 1.创建用户 创建一个名 ...

  2. mysql临时表创建_MySQL临时表创建

    和SQL SERVER 创建临时表不同 不能直接写 Create table #Test_Table 而是需要在 Create 和 table 之间 加入 TEMPORARY(temporary) 关 ...

  3. 如何设置mysql的权限_mysql 权限控制

    1.mysql的权限是,从某处来的用户对某对象的权限. 2.mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做. 3.权限校验分成两个步骤: a.能不能连接,检查从哪里来,用户名和密 ...

  4. 查看mysql用户权限_mysql 如何查看该数据库用户具有哪些权限?

    展开全部 背景 在了解动态权限之前,我们先回顾下 MySQL 的权限列表. 权限列表大体分为服务级别和表级别,列级别以32313133353236313431303231363533e59b9ee7a ...

  5. mysql 安装 权限_MySQL的安装、使用及权限管理

    一.数据库安装及管理 1. 安装 需安装mysql客户端和服务器端.Centos下,可用命令:yum install mysql安装mysql客户端:使用命令:yum install mysql-se ...

  6. mysql 赋权限_MySQL赋予用户权限命令总结

    MySQL用户可用权限 一个新建的MySQL用户没有任何访问权限,这就意味着你不能在MySQL数据库中进行任何操作.你得赋予用户必要的权限.以下是一些可用的权限: ALL: 所有可用的权限 CREAT ...

  7. mysql 临时表 限制_Mysql临时表

    当你创建临时表的时候,你可以使用temporary关键字.如: create temporary table tmp_table(name varchar(10) not null,passwd ch ...

  8. mysql 临时表 插入_mysql临时表插入数据有关问题

    insert into A(C1,C2) select * from (select C1,C2 from B limit 10) r ------解决方案-------------------- I ...

  9. mysql 临时表 中文_MySQL 临时表

    MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间. 临时表在MySQL 3.23版本中添加,如 ...

  10. mysql 临时索引_MYSQL临时表创建索引

    标签: DROP TEMPORARY TABLE IF EXISTS tmp_record_t2; CREATE TEMPORARY TABLE tmp_record_t2 ( consumption ...

最新文章

  1. 晶振噪声及杂散_如何判断是否需要使用分立式晶振和振荡器呢?
  2. 进度条(python 实现)
  3. 用友二次开发 用友控件 Js宿主脚本 调用用友T6 登录 参照 控件示例
  4. 【译】LXC and LXD: Explaining Linux Containers
  5. VTK:规则多边形源用法实战
  6. 数据结构(7)—— 排序总结
  7. mac系统快捷键大全详细介绍
  8. boa + ajax + cgi ajax请求cgi
  9. sqlserver min函数其他set操作消除了null值_数据库常用SQL操作篇
  10. JAVA架构师之路-视频学习
  11. 计算机虚拟仿真专业,计算机虚拟仿真实验教学中心
  12. 华为USG6000V防火墙的初始密码及修改密码的操作
  13. 更新极路由器1S,HC5661A刷breed再刷老毛子华硕教程
  14. 三星Galaxy S20:将侧面按钮更改为电源按钮
  15. 10句狠话,教你用英语发泄不满情绪(可可英语)
  16. 支付宝生活号开发中所遇到的困难及解决记录
  17. python开发指法练习软件_猿编程电脑端
  18. 软件测试应届简历,软件测试应届毕业生个人简历
  19. Vue+百度统计 实现网页的PV和UV统计
  20. Android4.1.1,USB存储模式

热门文章

  1. 生化危机4重生 java_生化危机-绝密报告4
  2. PHP实现队列及队列原理
  3. Unity(三)EasyTouch5的使用
  4. android电视,手机控制,Android手机遥控电视:智能语音控制节目
  5. TCP SYN握手报文可以传输数据吗
  6. 【聚类分析】基于FCM聚类实现交通干道车流量聚类分析及预测含Matlab源码
  7. Javascript搭建selenium测试环境
  8. 面试软件测试总结(常见的面试问题)
  9. 操作系统——进程管理的功能
  10. python创意网络爬虫_Python网络爬虫(一)