我不确定为什么会发生这种情况......实际的表还有数据,当试图将数据从实际表中提取到临时表中时,没有数据......
IF object_id('DI_Temp.di.Holly') IS NOT NULL
DROP TABLE DI_Temp.di.Holly
CREATE TABLE DI_Temp.di.Holly
(
Toys varchar(20)
,Meals varchar(100)
,Breaks varchar(20)
)
Insert DI_Temp.DI.Holly
Select
Toys, Meals, Breaks
from toysarefun.dbo.crazytoys (nolock)
where status = 'active'
--Select * from di_temp.di.holly
IF OBJECT_ID('tempdb.dbo.#Toys') IS NOT NULL
DROP TABLE tempdb.dbo.#Toys
SELECT *
INTO #Toys
FROM DI_Temp.di.Holly (NOLOCK)
WHERE Toys like 'H*'
Select *
from tempdb.dbo.#Toys
谢谢:)
答案 0 :(得分:4)
首先,你不是在比较苹果和苹果。您的测试选择应包括SAME过滤器作为INSERT..SELECT查询
其次,最好尽量减少在SELECT.. INTO
上花费的时间。最好先创建临时表。
第三,不要使用tempdb.dbo.#Toys
。 #隐含在tempdb中。无论如何你都会得到这个警告
忽略数据库名称'tempdb',引用tempdb中的对象。
更改的部分:
-- uncomment first to check if there are any matches
--Select * from di_temp.di.holly WHERE Toys like 'H*'
IF OBJECT_ID('tempdb.dbo.#Toys') IS NOT NULL
DROP TABLE #Toys;
SELECT *
INTO #Toys
FROM DI_Temp.di.Holly (NOLOCK)
WHERE 1=0;
INSERT INTO #Toys
SELECT *
FROM DI_Temp.di.Holly (NOLOCK)
WHERE Toys like 'H*';