1、临时表并不是指其存在性而言的,所以说除非是用drop table 把临时表删除,否则,一旦创建,永久存在。在存在性上和普通表是没有任何区别的。其临时性指的是数据的临时性。
2、临时表数据清空的的条件:①事务提交或回滚②会话结束
3、在oracle中,使用某条命令对数据库进操作时,并不会立即将更新操作更新到数据库中,而是以事务为单位将数据交到数据库中
4、oracle中的会话是指每个与用户交互的进程。在PL/SQL Developer中体现为,每次打开一个SQL Window 或者Command Window时将建立一个会话
5、临时表可以分为:事务性临时表和会话级临时表
事务级临时表:当事务提交或事务回滚时,表中数据将被清空
会话级临时表:会话结束时,表中数据将会被清空
6、创建会话级临时表SQL语句:create global temporary table 表名(列名 属性,列名 属性.......) on commit preserve rows
注意 global不可省略,on commit preserve rows表示当事务提交时,保留数据。commit 命令表示事务结束
7、会话级临时表中的数据仅在当前会话存在,一旦会话结束,数据库将自动清理其中数据(相当于使用了truncate table命令)。各会话之间的数据也是相互独立、互不影响的。
8、创建事务级临时表SQL语句:create global temporary table 表名(列名 属性,列名 属性.......) on commit delete rows
9、事务级临时表的数据仅在当前事务有效,事务一旦结束,所有数据都会自动清空。
10、临时表的应用场景:
①大表分割:大表数据量庞大时创建索引将会花费大量的时间,所以将大表分割成小表,对小表进行操作,最后对所有结果整合
②解决并行问题:当多个进程同时对张表进行操作时,通常对表进行锁定,而更新频繁时,对表的锁定将影响整个数据库的性能。因为各会话在临时表中的数据是相互透明的,所以无需对表进行锁定。提高了数据库的性能
③作为数据缓存:在进行对数据的复杂运算时,可以创建一张临时表,并将这些数据存储在临时表中。