Sql 使用SELECT INTO时是否可以在临时表上创建索引?

Sql 使用SELECT INTO时是否可以在临时表上创建索引?,sql,tsql,indexing,select-into,Sql,Tsql,Indexing,Select Into,我正在将CSV文件中的数据加载到临时暂存表中,该临时表被大量查询。我看了看我的执行计划,发现很多时间都花在扫描临时表上 当我选择进入该表时,有没有办法在该表上创建索引 SELECT * FROM TradeTable.staging.Security s WHERE ( s.Identifier IS NOT NULL OR s.ConstituentTicker IS NOT NULL OR s.CompositeTicker IS NOT NULL O

我正在将CSV文件中的数据加载到临时暂存表中,该临时表被大量查询。我看了看我的执行计划,发现很多时间都花在扫描临时表上

当我选择进入该表时,有没有办法在该表上创建索引

SELECT *    
FROM TradeTable.staging.Security s
WHERE (
    s.Identifier IS NOT NULL
    OR s.ConstituentTicker IS NOT NULL
    OR s.CompositeTicker IS NOT NULL
    OR s.CUSIP IS NOT NULL
    OR s.ISIN IS NOT NULL
    OR s.SEDOL IS NOT NULL
    OR s.eSignalTicker IS NOT NULL)

选择到
创建的表始终是一个堆。如果你想要一个PK/身份栏,你可以按照你在评论中的建议去做

CREATE TABLE #T
(
Id INT IDENTITY(1,1) PRIMARY KEY,
/*Other Columns*/
)

INSERT INTO #T 
SELECT *
FROM TradeTable.staging.Security
或者避免显式的
CREATE
,并需要列出所有列

SELECT TOP (0) IDENTITY(int,1,1) As Id, *
INTO #T
FROM TradeTable.staging.Security

ALTER TABLE #T ADD PRIMARY KEY(Id)

INSERT INTO #T 
SELECT *
FROM TradeTable.staging.Security

@HamletHakobyan您无法创建一个表并使用select into插入其中。@HamletHakobyan这是一个堆表-因此我需要为PK添加一列?您是否尝试过将create index语句作为批处理中的下一个语句运行?@HLGEM看起来我解决这个问题的方法是1)使用
create table
创建临时表和PK/Identity列,然后2)对所有数据执行
INSERT
。我可以在1)和2)之间添加索引。是的,插入是针对现有表(永久表或临时表),所以您可以创建索引。Select into将创建不带索引的表。