Sql server 在SQL Server中创建一个temp表作为#tentable和TempDb.dbo.TembName有什么区别?哪一个性能更好?

Sql server 在SQL Server中创建一个temp表作为#tentable和TempDb.dbo.TembName有什么区别?哪一个性能更好?,sql-server,tsql,stored-procedures,temp-tables,Sql Server,Tsql,Stored Procedures,Temp Tables,#tentable和TempDb.dbo.TembName之间的主要区别是什么。因为他们在一天结束时都是临时表。那么为什么我要使用一个而不是另一个呢?没有性能差异。#tentable仅对单个会话可见,并在会话结束时(如果在顶级批处理中创建)或批处理或存储过程结束时(如果在嵌套批处理或存储过程中创建)自动删除。tempdb中的常规表对所有会话都可见,并且在服务器重新启动之前不会自动删除。没有性能差异。#tentable仅对单个会话可见,并在会话结束时(如果在顶级批处理中创建)或批处理或存储过程结束

#tentable和TempDb.dbo.TembName之间的主要区别是什么。因为他们在一天结束时都是临时表。那么为什么我要使用一个而不是另一个呢?

没有性能差异。#tentable仅对单个会话可见,并在会话结束时(如果在顶级批处理中创建)或批处理或存储过程结束时(如果在嵌套批处理或存储过程中创建)自动删除。tempdb中的常规表对所有会话都可见,并且在服务器重新启动之前不会自动删除。

没有性能差异。#tentable仅对单个会话可见,并在会话结束时(如果在顶级批处理中创建)或批处理或存储过程结束时(如果在嵌套批处理或存储过程中创建)自动删除。tempdb中的常规表对所有会话都可见,并且在服务器重新启动之前不会自动删除。

在性能上没有任何差异,但在用户会话结束时会清空#temp表(在许多情况下,架构保留在SQL server 2005的缓存中)而在重新启动istance或手动删除它之前,TempDB中会保留一个普通表

临时表表变量之间存在许多差异。 两者都在TempDB中(以消除一些误解),但:

  • 默认情况下,临时表具有统计信息,而对于表变量,引擎始终估计1行(也使用InMemory选项)。 从CU3 di SQL 2014和SP2 di SQL 2012,您可以使用跟踪标志2453在表变量中启用统计信息,但您必须注意性能方面的影响
  • 在SQL Server 2014之前,如果需要添加非聚集索引,则不能在表变量中内联添加,并利用SQL Server 2005引入的
  • 临时表支持事务,而表变量不支持事务
  • 临时表可以从创建它们的存储过程中调用的存储过程中访问,而表的变量号为
  • 表变量不支持该语句,而临时表支持该语句
  • 基本上,tables变量需要的闩锁和事务日志记录比temp表少得多

在性能上没有任何区别,但在用户会话结束时会清空#temp表(在许多情况下,架构保留在SQL Server 2005的缓存中),而在重新启动istance或手动删除之前,TempDB中会保留一个普通表

临时表表变量之间存在许多差异。 两者都在TempDB中(以消除一些误解),但:

  • 默认情况下,临时表具有统计信息,而对于表变量,引擎始终估计1行(也使用InMemory选项)。 从CU3 di SQL 2014和SP2 di SQL 2012,您可以使用跟踪标志2453在表变量中启用统计信息,但您必须注意性能方面的影响
  • 在SQL Server 2014之前,如果需要添加非聚集索引,则不能在表变量中内联添加,并利用SQL Server 2005引入的
  • 临时表支持事务,而表变量不支持事务
  • 临时表可以从创建它们的存储过程中调用的存储过程中访问,而表的变量号为
  • 表变量不支持该语句,而临时表支持该语句
  • 基本上,tables变量需要的闩锁和事务日志记录比temp表少得多

#在TempDB中也会创建诱惑,并一直保存到删除为止。#在TempDB中也会创建诱惑,并一直保存到删除为止。