SQL Server中的本地和全局临时表有什么区别?SQL Server中的本地和全局临时表
回答
从联机丛书报价:
本地临时表仅在当前会话中可见;全局临时表对所有会话均可见。当他们走出去的范围
临时表自动被删除,除非使用DROP TABLE显式删除:
- 在存储过程中创建的本地临时表的存储过程完成时自动删除。该表可以由创建该表的存储过程执行的任何嵌套存储过程引用。调用创建表的存储过程的进程无法引用该表。
- 所有其他本地临时表在当前会话结束时自动删除。
- 当创建表的会话结束并且所有其他任务停止引用时,全局临时表会自动删除。任务和表之间的关联仅在单个Transact-SQL语句的生命周期中进行维护。这意味着在完成创建会话结束时主动引用表的最后一个Transact-SQL语句时会删除全局临时表。
表变量(
DECLARE @t TABLE
)仅创建它的连接是可见的,并且当所述批处理或存储过程结束被删除。本地临时表(
CREATE TABLE #t
)只对创建它的 连接可见,当连接 关闭被删除。全局临时表(
CREATE TABLE ##t
)是给大家, 可见,当已引用它们的所有连接已经关闭被删除。临时数据库永久表(
USE tempdb CREATE TABLE t
)是可见的 大家,并重新启动服务器时被删除。
另外值得指出的是:当创建它们的作用域关闭时,本地临时表将被删除。所以,如果你在一个存储过程中创建一个本地临时表,然后尝试在存储过程之外访问它 - 它将不存在。对于Will, – 2013-04-24 03:59:29
+1。我试图使用本地临时表作为优化器,我试图使用存储过程作为“创建并填充,如果它不存在”初始值设定项。正如你所说,除非您使用全局临时表,否则它不起作用。 – quillbreaker 2013-12-24 21:06:29
+1包含tempdb永久表。 – CoderDennis 2014-10-15 16:01:53
1。)本地临时表表仅在连接期间存在,或者如果在复合语句中定义,则在复合语句的持续时间内存在。
本地临时表仅适用于创建表的SQL Server会话或 连接(表示单个用户)。当创建表的会话已关闭 时,会自动删除这些 。本地临时表名称使用单个散列 (“#”)标志。
CREATE TABLE #LocalTemp
(
UserID int,
Name varchar(50),
Address varchar(150)
)
GO
insert into #LocalTemp values (1, 'Name','Address');
GO
Select * from #LocalTemp
本地临时表的范围存在于当前 用户的当前会话装置与当前查询窗口。如果您将关闭当前的 查询窗口或打开一个新的查询窗口,并尝试找到上面创建的临时表 ,它会给你错误。
2)全局临时表保持永久数据库,但只能在给定的连接存在的行。当连接关闭时,全局临时表中的数据将消失。但是,下次打开数据库时,表定义将保留在数据库中以供访问。
全局临时表可用于所有SQL Server会话或 连接(意味着所有用户)。这些可以由任何SQL 服务器连接用户创建,当SQL Server连接全部关闭后,这些会自动删除。全局临时表 名称使用双重散列(“##”)符号。而本地临时表仅当前的SQL Server 连接可见
CREATE TABLE ##GlobalTemp
(
UserID int,
Name varchar(50),
Address varchar(150)
)
GO
insert into ##GlobalTemp values (1, 'Name','Address');
GO
Select * from ##GlobalTemp
全局临时表是所有SQL Server连接 可见。
- 1. 全局临时表中的Microsoft SQL Server
- 2. 本地临时表的SQL Server 2000
- 3. 错误在SQL Server本地临时表
- 4. MS SQL Server - 全局临时表的安全并发使用?
- 5. SQL Server中的会话全局临时表
- 6. 删除全局临时表中的索引在SQL Server
- 7. 什么是全局和本地临时表在sql中的用法
- 8. 全局临时表
- 9. 全球临时表 - SQL Server与Oracle
- 10. pl/sql创建临时全局表
- 11. SQL Server 2012 SSRS:使用全局临时表创建报告
- 12. SQL Server全局临时表在删除后仍然存在
- 13. oracle中的全局临时表空间
- 14. 动态SQL中的临时表(SQL-Server)
- 15. 将本地数据插入到SQL Server临时表中
- 16. oracle全局临时表
- 17. 在SQL Server 2008中,是有可能禁用全局临时表的自动降
- 18. 本地临时表的默认锁定粒度 - Microsoft SQL Server 2000
- 19. 从sql脚本查找全局临时表名
- 20. 临时表和SQL Server复制
- 21. SQL Server 2005和临时表范围
- 22. 使用SQL Server临时表
- 23. 临时表SQL Server等
- 24. SQL Server联合临时表
- 25. 2016年SQL Server临时表
- 26. SQL Server 2005临时表
- 27. 加入临时表SQL Server
- 28. ORACLE11全局临时表的寿命
- 29. SQL Server中的临时表用法
- 30. 在SQL Server中的XML列临时表
下面是一些总结这个细节,[点击这里](http://jayeshsorathia.blogspot.com/2012/03/beginning-sql-difference-between-local.html)使用表时 – 2012-03-28 11:52:20
要小心变量。如果您在查询中使用它们,那么它们可能会导致您的查询计划出现严重的性能问题,因为它们未被编入索引。 – 2013-01-03 03:25:15
实际上,如果需要,临时表可以编入索引,但同样需要时间和资源,所以它仍然可能导致性能或资源问题。 – 2016-09-12 16:32:14