Tengo el siguiente problema en SQL Server 2005: intentar insertar algunas filas en una variable de tabla lleva mucho tiempo en comparación con la misma inserción que usa una tabla temporal.
Este es el código para insertar en la variable de tabla
DECLARE @Data TABLE(...)
INSERT INTO @DATA( ... )
SELECT ..
FROM ...
Este es el código para insertar en la tabla temporal
CREATE #Data TABLE(...)
INSERT INTO #DATA( ... )
SELECT ..
FROM ...
DROP TABLE #Data
La tabla temporal no tiene claves ni índices, la parte de selección es la misma entre las 2 consultas y el número de resultados devueltos por la selección es de ~ 10000 filas. El tiempo necesario para ejecutar la selección solo es de ~ 10 segundos.
La versión de la tabla temporal tarda hasta 10 segundos en ejecutarse, tuve que detener la versión variable de la tabla después de 5 minutos.
Tengo que usar una variable de tabla porque la consulta es parte de una función de valor de tabla, que no permite el acceso a la tabla temporal.
Plan de ejecución para la versión de tabla variable
Plan de ejecución para la versión de la tabla temporal
EXEC
en una función ... supongo que estaba equivocado