Trucos de Sql Server Crear Tablas Temporales en Memoria


Podemos utilizar tablas temporales en memoria para no tener que utilizar el acceso del disco duro del servidor.

Declararemos la tabla y pondremos las columnas y los tipos de datos que tendrá:

DECLARE
@TablaTemporal
TABLE
(
ID numeric(18,0) NOT NULL DEFAULT(0)
)

--Insertaremos el contenido que queramos en nuestra tabla temporal

INSERT INTO
@TablaTemporal
(
IdUsuario
)
SELECT
IdUsuario
FROM
Tabla c
With(NoLock)

Ahora ya podemos acceder a la tabla con una simple select:

SELECT * FROM @TablaTemporal

Recordar que son tablas Temporales, por lo que no quedara el resultado en memoria. Estas tablas temporales son muy útiles para realizar procesos con storeds (por ejemplo).

Comentarios sobre Crear Tablas Temporales en Memoria


René dice:

El ejemplo es muy bueno, se agradece. Lamentablemente no resulta cuando hago: SET @SQL = 'DECLARE @TablaTemporal TABLE (ID numeric(18,0) NOT NULL DEFAULT(0))' Exec(@sql) SELECT * FROM @TablaTemporal <-- Este select no funciona, ya que la tabla temporal "existe" dentro del EXEC. Lo tengo que hacer así, ya que mi tabla tiene una cantidad de campos variable. Si tienen alguna sugerencia/solución se los agradecería.
Comentario publicado 19/05/2010 23:13:00

Sergio dice:

¿Qué es exactamente lo que necesitas hacer con esa tabla de campos variables? Quizás te pueda servir usar tablas temporales de sesion con # y crearlas con 'select * into' Te dejó aquí un ejemplo. Si lo ejecutas verás cómo las misma tabla tiene diferentes campos. --Ejemplo tablas temporales # select 'a' as a,'b' as b into #a select * from #a drop table #a go select 'a' as a,'b' as b,'c' as c into #a select * from #a drop table #a go declare @cmd as nvarchar(4000) set @cmd='select ''a'' as a,''b'' as b,''c'' as c,''d'' as d into #a' + char(13) set @cmd=@cmd+'select * from #a' + char(13) set @cmd=@cmd+'drop table #a' exec sp_executesql @cmd
Comentario publicado 13/07/2010 11:24:00

pablo dice:

esa no es una tabla temporal, es una VARIABLE tipo 'table'. y en muchos casos son mejores que una tabla temporal. Las variables de declaran(DECLARE) mientras que las tablas se crean (CREATE). Salu2
Comentario publicado 02/08/2010 12:29:00

Sergio dice:

Pablo, aunque en muchos casos sean mejores las variables tipo table, no creo q sirva para el caso expuesto por René. Las variables tipo table sólo existen en el dominio de ejecución actual, mientras que las tablas temporales existen durante toda la sesión. Dependerá de las necesidades usar unas u otras.
Comentario publicado 03/08/2010 11:40:00
Dejar un comentario

Nombre:

Mail:

Web:

Comentario: