MySQL临时表

来源: 2024-07-06 09:22:33 播报

MySQL 临时表是用来保存一些临时数据时的,与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。

一、临时表说明

1、临时表是建立在系统临时文件夹中的表,占用系统物理空间

2、在PHP脚本执行完成后或断开数据库链接时又或者直接手动删除,系统临时文件加中的临时表文件会删除,并释放所用的空间。

3、临时表不会存储在数据库当中的基表,当然数据库的基表也不会存储在系统临时文件夹中。

4、临时表存储在数据库会话中,不在数据库中,当使用show tables 时没有显示,但是可以查询,当关闭数据库(quit,exit)然后在打开在去数据库中查询的时候就不存在了。

5、数据库会话(session)是指连接到数据库用户开始到退出数据库结束会话就是会话的一个生命周期。

6、临时表创建语法 create temporary table ...; 临时表名称可以和普通表相同,因为临时表与普通表存储在不同的文件夹中。

7、数据库会话中如果有同名的临时表和普通表时,show create table 语句,以及增删改查语句(查询语句)访问的是临时表;

8、一个临时表只能被创建它的数据库会话中(session)访问,对其他会话线程是不可见。

二、优缺点

1、由于视图的内容是在该视图每次被使用的时候才生成,所以数据和数据库中的数据是同步的,但是在每次查询的时候都要建立视图表结构,所以比较浪费时间。

2、临时表仅需创建一次,所以相比视图每次都创建视图结构,节省了大量时间,但是临时表的数据在数据源发生改变是没有进行更新的话,就会出现数据不同步现象。

3、简化数据查询语句——定义视图可以将表与表之间的复杂的连接操作和搜索条件对用户影藏起来,用户只需简单的对一个视图进行查询即可。

4、使用户能从多角度看待同一数据。

5、提高了数据的安全性———在建立视图的时候可以吧敏感的数据影藏起来,而吧需要的数据暴露给客户这样的话比较安全。

6、提供了一定程度的逻辑独立性——数据库中是三级模式两级映射,三级模式是 外模式、模式、内模式而这里的视图就是外模式,这样就提供了数据的逻辑独立性。

三、什么时候用临时表呢?

应用场景1:你在短期内有很多DML操作,比如京东淘宝亚马逊的购物车表,把东西放购物车(insert),变更数量(update),删除商品(delete),一旦结算金钱后,这些数据就要清掉,这时需要用临时表

应用场景2:在导出数据时,你可能不想导完整的数据库,或者表,你可能只想要导出符合某些条件的数据,那么你可以创建临时表,把select语句插入到临时表,接着导出这个临时表,导完以后通过结束session或者事务的方式,让这些没用的数据自动清理掉

应用场景3:你在写存储过程时,有很多的连接,比如你需要连接A,B,C,D,E,F,G,H那么多张表,才能得到你的结果表,同时做连接的消耗太大,你可以先A,B,C连接的结果,放在临时表,接着再把这张临时表,跟D,E,F连接,作为新的结果放在临时表,接着再把临时表与G,H连接,最后得到临时表数据,一次插入到结果表(永久表)。