Estou com o seguinte problema no SQL Server 2005: tentar inserir algumas linhas em uma variável de tabela leva muito tempo em comparação com a mesma inserção usando uma tabela temporária.
Este é o código para inserir na variável de tabela
DECLARE @Data TABLE(...)
INSERT INTO @DATA( ... )
SELECT ..
FROM ...
Este é o código para inserir na tabela temporária
CREATE #Data TABLE(...)
INSERT INTO #DATA( ... )
SELECT ..
FROM ...
DROP TABLE #Data
A tabela temporária não possui chaves ou índices, a parte select é a mesma entre as 2 consultas e o número de resultados retornados pelo select é de aproximadamente 10.000 linhas. O tempo necessário para executar o select sozinho é de aproximadamente 10 segundos.
A versão da tabela temporária leva até 10 segundos para ser executada, tive que interromper a versão da variável da tabela após 5 minutos.
Tenho que usar uma variável de tabela porque a consulta faz parte de uma função de valor de tabela, que não permite acesso à tabela temporária.
Plano de execução para a versão variável da tabela
Plano de execução para a versão da tabela temporária