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 に答える