mysql 临时表权限_MySQL临时表浅析
一、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临时表浅析相关推荐
- windows 新建mysql权限设置_Windows下设置MySQL安全权限_mysql
注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改. 文中提及的权限都是在原有权限上附加的权限. [修改步骤] 1.创建用户 创建一个名 ...
- mysql临时表创建_MySQL临时表创建
和SQL SERVER 创建临时表不同 不能直接写 Create table #Test_Table 而是需要在 Create 和 table 之间 加入 TEMPORARY(temporary) 关 ...
- 如何设置mysql的权限_mysql 权限控制
1.mysql的权限是,从某处来的用户对某对象的权限. 2.mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做. 3.权限校验分成两个步骤: a.能不能连接,检查从哪里来,用户名和密 ...
- 查看mysql用户权限_mysql 如何查看该数据库用户具有哪些权限?
展开全部 背景 在了解动态权限之前,我们先回顾下 MySQL 的权限列表. 权限列表大体分为服务级别和表级别,列级别以32313133353236313431303231363533e59b9ee7a ...
- mysql 安装 权限_MySQL的安装、使用及权限管理
一.数据库安装及管理 1. 安装 需安装mysql客户端和服务器端.Centos下,可用命令:yum install mysql安装mysql客户端:使用命令:yum install mysql-se ...
- mysql 赋权限_MySQL赋予用户权限命令总结
MySQL用户可用权限 一个新建的MySQL用户没有任何访问权限,这就意味着你不能在MySQL数据库中进行任何操作.你得赋予用户必要的权限.以下是一些可用的权限: ALL: 所有可用的权限 CREAT ...
- mysql 临时表 限制_Mysql临时表
当你创建临时表的时候,你可以使用temporary关键字.如: create temporary table tmp_table(name varchar(10) not null,passwd ch ...
- mysql 临时表 插入_mysql临时表插入数据有关问题
insert into A(C1,C2) select * from (select C1,C2 from B limit 10) r ------解决方案-------------------- I ...
- mysql 临时表 中文_MySQL 临时表
MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间. 临时表在MySQL 3.23版本中添加,如 ...
- mysql 临时索引_MYSQL临时表创建索引
标签: DROP TEMPORARY TABLE IF EXISTS tmp_record_t2; CREATE TEMPORARY TABLE tmp_record_t2 ( consumption ...
最新文章
- 晶振噪声及杂散_如何判断是否需要使用分立式晶振和振荡器呢?
- 进度条(python 实现)
- 用友二次开发 用友控件 Js宿主脚本 调用用友T6 登录 参照 控件示例
- 【译】LXC and LXD: Explaining Linux Containers
- VTK:规则多边形源用法实战
- 数据结构(7)—— 排序总结
- mac系统快捷键大全详细介绍
- boa + ajax + cgi ajax请求cgi
- sqlserver min函数其他set操作消除了null值_数据库常用SQL操作篇
- JAVA架构师之路-视频学习
- 计算机虚拟仿真专业,计算机虚拟仿真实验教学中心
- 华为USG6000V防火墙的初始密码及修改密码的操作
- 更新极路由器1S,HC5661A刷breed再刷老毛子华硕教程
- 三星Galaxy S20:将侧面按钮更改为电源按钮
- 10句狠话,教你用英语发泄不满情绪(可可英语)
- 支付宝生活号开发中所遇到的困难及解决记录
- python开发指法练习软件_猿编程电脑端
- 软件测试应届简历,软件测试应届毕业生个人简历
- Vue+百度统计 实现网页的PV和UV统计
- Android4.1.1,USB存储模式