21

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

有没有办法在这个表上创建索引SELECT INTO

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)

在此处输入图像描述

4

1 回答 1

26

创建的表SELECT INTO始终是一个堆。如果您想要一个 PK/Identity 列,您可以按照评论中的建议进行操作

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
于 2012-12-21T21:08:53.440 回答