临时表或普通表有啥更好的方法?

Posted

技术标签:

【中文标题】临时表或普通表有啥更好的方法?【英文标题】:What would be a better approach a temp table or ordinary table?临时表或普通表有什么更好的方法? 【发布时间】:2013-06-27 12:16:04 【问题描述】:

我有一个存储过程,我需要在其中保存一些数据并对其进行处理。为此,我正在使用临时表 (#temp)。现在由于临时表存储在 tempDb 中,这将导致数据库间通信,所以创建一个普通表会更好吗? #temp 表还有其他好处吗?

【问题讨论】:

你是什么意思数据库间通信?能不能详细解释一下!什么类型的沟通或什么?否则,#Temp 是存储临时数据的最佳方式。 由于临时表总是在数据库服务器的 tempDb 数据库中创建,所以每当我们访问该表(选择/更新)时,它都会从当前工作数据库中访问 tempDb 数据库。这就是我所说的 Inter数据库通信 是的,但是,当您更改 SQL 连接时,它会影响您。我的意思是,每当您的连接存在时,您的临时表都会自动删除,当且仅当您的连接发生变化时,您将不会获得该表。因此,在您拥有单个 SQL 连接之前,您不会有任何问题。那么,你是哪个平台呢? 【参考方案1】:

虽然与临时表的通信在技术上是一种“数据库间”通信,但 tempdb 通常是高度缓存的(或者可以这样配置),因此它更有可能是从内存读取,然后是从磁盘读取。

默认情况下,临时表也只能由创建它的进程访问,这可以保护数据不被未经授权的用户读取。表的清理也是自动管理的。它还可以帮助减少工作数据库中的资源争用。

从实际的角度来看,可以对常规数据库进行微调以提供比 #temp 表更好的性能,但在大多数情况下,#temp 表将是一个更实用的解决方案。

Tempdb 概览: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc31654.1550/html/sag1/X73131.htm

Tempdb 性能和调优: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00841.1502/html/phys_tune/X94507.htm

【讨论】:

以上是关于临时表或普通表有啥更好的方法?的主要内容,如果未能解决你的问题,请参考以下文章

在sqlserver中临时TMP表有啥作用?里面储存的都是啥数据?

使用视图和临时表之间有啥区别(系统资源方面)?

Oracle 使用临时表或其他方法

显式删除临时表或让SQL Server处理它

临时表,临时表什么时候删除

sqlserver中判断表或临时表是否存在