Mam następujący problem w SQL Server 2005: próba wstawienia niektórych wierszy do zmiennej tabeli zajmuje dużo czasu w porównaniu z tym samym wstawieniem przy użyciu tabeli tymczasowej.
To jest kod, który należy wstawić do zmiennej tabeli
DECLARE @Data TABLE(...)
INSERT INTO @DATA( ... )
SELECT ..
FROM ...
To jest kod do wstawienia do tabeli temp
CREATE #Data TABLE(...)
INSERT INTO #DATA( ... )
SELECT ..
FROM ...
DROP TABLE #Data
Tabela tymczasowa nie ma żadnych kluczy ani indeksów, część select jest taka sama między 2 zapytaniami, a liczba wyników zwróconych przez select wynosi ~ 10000 wierszy. Czas potrzebny do wykonania samego wyboru wynosi ~ 10 sekund.
Wykonanie wersji tabeli temp zajmuje do 10 sekund, musiałem zatrzymać wersję zmiennej tabeli po 5 minutach.
Muszę użyć zmiennej tabeli, ponieważ zapytanie jest częścią funkcji wartości tabeli, która nie pozwala na dostęp do tabeli tymczasowej.
Plan wykonania dla wersji zmiennej tabelowej
Plan wykonania dla wersji tabeli tymczasowej
EXEC
tej funkcji .... chyba się myliłem