SQL Temp DB,临时表之间的区别&表

时间:2017-02-14 10:41:04

标签: sql sql-server hashtable temp-tables

我想知道,在 TempDB 表格部分中创建表格是否与创建哈希表不同。

在Temp DB中创建表

USE [tempdb]
GO

/****** Object:  Table [dbo].[abc]    Script Date: 2/14/2017 4:04:31 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[abc](
    [id] [int] NULL,
    [name] [nchar](10) NULL
) ON [PRIMARY]

GO

创建哈希表

CREATE TABLE #abcd(
id INT,
name varchar(10)
)

INSERT INTO #abcd VALUES (1,'22')

临时数据库和哈希表中的这些表是否相同? 我的意思是这个普通表的行为就像一个临时表,因为它是在temp DB ??

中创建的

2 个答案:

答案 0 :(得分:2)

  

在TempDB的表部分中创建表是否与创建哈希表不同。临时数据库和哈希表中的这些表是否相同?

dbo.temp中的

TempDB将持续到系统重新启动。在重新启动后(使用模型数据库作为模板),将从头开始重新创建Tempdb

#temp仅会在该会话中保留

还有一些差异,适用于#temp,你不能创建

1.triggers
2.外键

总之,TempDB中的dbo.temp就像普通表

一样

答案 1 :(得分:1)

您不需要这样做:

USE [tempdb]

这不是它的工作方式。如果没有上述行,在第二个查询中执行您正在执行的操作将自动使用tempdb

-- this creates a temp table in tempdb for you
CREATE TABLE #abcd(
id INT,
name varchar(10)
)

您不必指定。第一个查询不正确。你不应该专门写信给tempdb,SQL服务器管理那里的表的创建和整理,所以你不必这样做。

如果您有一个打开的查询,那么在您完成此操作时,这是一个很好的做法:

DROP TABLE #abcd

否则临时表将持续存在。如果它在存储过程中创建,一旦超出范围,临时表将为您清理。