日期:2014-05-16  浏览次数:20908 次

Oracle、SqlServer、MySql临时表小结

?

1、Oracle临时表
Oracle临时表分为两种,且使用前必须先创建好结构。
会话级:
会话间数据不能共享;数据在当前会话有效(无视事物),只有断开链接才会删除数据;断开时只清空数据不删除表结构;
create global temporary table temp_tbl(col_a varchar2(30))
on commit preserve rows;
事务级:
会话间数据不能共享;数据以事务为分界点,事务提交、会滚都会删除数据;断开链接也会删除数据;断开时只清空数据不删除表结构;
create global temporary table temp_tbl(col_a varchar2(30))
on commit delete rows;

关于Oracle临时表详细使用请参考我的文章:http://sosuny.iteye.com/blog/551006



2、MySql临时表
临时表只在会话链接期间存在,断开链接时,将自动删除表并释放所用空间。
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
另外,mysql支持HEAP方式,生成的表在内存中,会比普通的临时表快一些。但因占用内容应综合考虑率使用。
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP


3、SqlServer临时表
分全局和本地,
本地,表名以#开头,临时表仅对当前链接可见;断开链接会删除表;
create table #table1 ...
全局,表名以##开头,创建后对任何用户可见,当所有引用该表的用户从 SQL Server 断开连接时被删除;
create table ##table1 ...

?

?