2012-12-21 6 views
12

Mam ładowanie danych z pliku CSV do tymczasowej tabeli tymczasowej i ta tabela tymczasowa jest często sprawdzana. Spojrzałem na mój plan wykonania i zobaczyłem, że dużo czasu spędza się na odczytywaniu tabeli tymczasowej.Czy można utworzyć indeksy na tabeli tymczasowej przy użyciu SELECT INTO?

Czy istnieje sposób utworzenia indeksu na tej tabeli, gdy I SELECT INTO jest?

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

@HamletHakobyan nie można utworzyć tabela i użyj wybierz w, aby wstawić do niego. – HLGEM

+0

@HamletHakobyan To stolik na sterty - więc musiałbym dodać kolumnę dla PK? –

+2

Czy próbowałeś uruchomić tworzenie instrukcji indeksu jako kolejnej instrukcji wsadowej? – HLGEM

Odpowiedz

17

tabela utworzona przez SELECT INTO zawsze jest kupa. Jeśli chcesz PK/Identity kolumnę można albo zrobić jak sugerujesz w komentarzach

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

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

lub uniknąć wyraźnego CREATE i trzeba wymienić wszystkie kolumny się z

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 
Powiązane problemy