我正在将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)
答案 0 :(得分:21)
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