MySQL临时表使用注意事项

创建临时表
创建的临时表只对当前会话可见,用于存放临时数据,关闭会话临时表自动删除。
show tables看不到表,但是可以通过show create table t\G 来查看表结构。

 

临时表的默认存储引擎,由 default_tmp_storage_engine 参数决定,默认是InnoDB。

临时表表结构存放在tmpdir目录下;数据存放则存放在位于datadir的临时表空间中,由参数 innodb_temp_data_file_path决定其相关配置。

临时表的名字和普通表的名字可以相同,默认查询的是临时表。

创建普通表并插入数据


创建临时表

此时查询t1表,查询到没有数据,说明查询的是临时表。

 

如何解决临时表和普通表名字相同带来的混乱

1、创建临时表时,在表名前加前缀,如tmp_t1
2、创建临时表时,语句中加入判断表名是否存在

 

临时表和数据库的关系很松散,或者说是两者就没有关系,两者并没有互相约束。

1、删除数据库,并不会连带删除临时。比如A会话有查询数据库DB1的权限,并创建了临时表t1。此时,其他会话删除数据库DB1,会话A仍然能继续操作和查询临时表t1。

2、临时表可以创建在不存在的库中。上面,已经将临时表t1所在库DB1删除。但是,仍可以通过制定库名的方式创建临时表t2.

 

48 total views, 3 views today

发表评论

电子邮件地址不会被公开。 必填项已用*标注