2012-12-21 10 views
12

CSVファイルのデータを一時ステージングテーブルにロードしていますが、この一時テーブルが多くクエリされています。実行計画を見て、一時テーブルをスキャンするのに多くの時間が費やされているのを見ました。SELECT INTOを使用しているときに一時表に索引を作成できますか?

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) 

enter image description here

+0

とからすべての列をリストする必要があるとして、あなたが行うことができますいずれかのPK/ID列をしたい場合テーブルに挿入し、そこに挿入するためにselectを使用します。 – HLGEM

+0

@HamletHakobyanヒープテーブルなので、PKの列を追加する必要がありますか? –

+2

バッチ内の次のステートメントとしてcreate indexステートメントを実行しようとしましたか? – HLGEM

答えて

17

SELECT INTOによって作成されたテーブルは常にヒープです。あなたはコメント

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

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

に示唆または明示的CREATEを避け、あなたが作成することはできません@HamletHakobyan

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 
関連する問題