什么叫临时表?它与普通表有什么区别?

什么叫临时表?它与普通表有什么区别?,第1张

作用域不同,当你关闭sql连接的时候 临时表就会 自动删除,普通表不会

1、创建方法:

方法一:

create table TempTableName

select [字段1,字段2,...,] into TempTableName from table

方法二:

create table tempdb.MyTempTable(Tid int)

说明:

(1)、临时表其实是放在数据库tempdb里的一个用户表;

(2)、TempTableName必须带“#”,“#"可以是一个或者两个,以#(局部)或##(全局)开头的表,这种表在会话期间存在,会话结束则自动删除

(3)、如果创建时不以#或##开头,而用tempdb.TempTable来命名它,则该表可在数据库重启前一直存在。

2、手动删除

drop table TempTableName

普通表和临时表的区别只是表名开头无 "#"

sqlserver中说到临时表就不得不提到永久表

临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

临时表就是用户在创建表的时候添加了“#”前缀的表,其特点是根据进程独立。只有进程的拥有者有表的访问权限,其它用户不能访问该表;

不同的用户进程,创建的临时表虽然“名字”相同,但是这些表之间相互并不存在任何关系;在SQLSERVER中,通过特别的命名机制保证临时表的进程独立性。

定单和购买意向一般不会保存在真正的“临时表”中,而是实际的普通表,之所以称之为“临时表”,只是一种叫法而已。因为随着一个用户进程的结束,真正的临时表会自动清除,而定单和购买意向数据一般是定时清除,所以一定是保存在普通表中,具备数据的持久性特征(临时表最缺乏的就是数据的持久性)。

真正的临时表利用了数据库临时表空间,由数据库系统自动进行维护,因此节省了表空间。并且由于临时表空间一般利用虚拟内存,大大减少了硬盘的I/O次数,因此也提高了系统效率。

可以存放一个临时的结果集

比如某个复杂查询【也可能不复杂,多表join 子查询 多条件,多case等】被频繁的执行来获取某个结果集

这个结果集就可以放一个临时表,省的反复执行该复杂查询浪费时间


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9920121.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存