Ho il seguente problema in SQL Server 2005: il tentativo di inserire alcune righe in una variabile di tabella richiede molto tempo rispetto allo stesso inserimento mediante una tabella temporanea.
Questo è il codice da inserire nella variabile della tabella
DECLARE @Data TABLE(...)
INSERT INTO @DATA( ... )
SELECT ..
FROM ...
Questo è il codice da inserire nella tabella temporanea
CREATE #Data TABLE(...)
INSERT INTO #DATA( ... )
SELECT ..
FROM ...
DROP TABLE #Data
La tabella temporanea non ha chiavi o indici, la parte selezionata è la stessa tra le 2 query e il numero di risultati restituiti dalla selezione è ~ 10000 righe. Il tempo necessario per eseguire la selezione da solo è di ~ 10 secondi.
La versione della tabella temporanea impiega fino a 10 secondi per essere eseguita, ho dovuto interrompere la versione variabile della tabella dopo 5 minuti.
Devo usare una variabile di tabella perché la query fa parte di una funzione di valore di tabella, che non consente l'accesso alla tabella temporanea.
Piano di esecuzione per la versione variabile della tabella
Piano di esecuzione per la versione della tabella temporanea
EXEC
una funzione .... Immagino di essermi sbagliato