我查找并找到了关于SQL Server临时表的这篇文章,因为我在我们存储过程中遇到了一行代码:
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则不会。(附注:如果您首先创建表,则拥有更多的控制权;例如指定主键等,但是您不能使用SELECT INTO,必须更改为INSERT INTO。) - MatBailie