Можно ли создавать индексы для временной таблицы при использовании SELECT INTO?

Я загружаю данные из 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)

1 ответ

Решение

Таблица, созданная 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
Другие вопросы по тегам