【发布时间】:2016-09-13 09:43:58
【问题描述】:
我在 SQL Server 中搜索并找到了 this article 关于临时表的信息,因为我在我们的一个存储过程中遇到了一行:
SELECT Value SomeId INTO #SomeTable FROM [dbo].[SplitIds](@SomeIds, ';')
我知道#SomeTable 作为临时表存储在tempdb 中。但是,我不明白为什么我们不必首先使用CREATE TABLE #SomeTable,因为它写在提到的文章中。我们的代码运行良好,我只是不明白为什么使用SELECT ... INTO #SomeTable 就足够了。当我在开头添加CREATE TABLE #SomeTable 会有什么后果?我们会在性能上得到任何差异吗?表会存储在其他位置吗?
【问题讨论】:
-
因为该语法明确用于在理智的时候创建和填充。您可以选择先创建范围,但随后您的插入语句需要更改为
insert into #temp select....。基本上答案是;因为 SELECT INTO 创建临时表,而 INSERT INTO 不会。 (P.S. 如果你先创建表,你有更多的控制权;指定主键等,但是你不能使用 SELECT INTO,你必须更改为 INSERT INTO。) -
@MatBailie 这就是我想要的。请将其发布为答案,以便可以关闭问题。
标签: sql-server tsql sql-server-2014 temp-tables