SQL Server - Tablas temporales

   
Vista:

Tablas temporales

Publicado por Ivonne (50 intervenciones) el 16/03/2009 17:55:37
Buenas tardes amigos de lwp, tengo una duda les platico..lo que pasa que para crear reportes la mayoria de las veces estoy utilizando tabla temporales creando con esta sintaxis:
if exists (select [id] from tempdb..sysobjects where id = Object_Id('tempdb..#vvcredito') and type = 'U') drop table #vvcredito
lo cual yo tenia la idea de que esa tabla nada mas es creada mistras estoy consultando el reporte y cuando lo cierre se eliminaba de la tabla pero veo que no es así, ya que queda creada para que se borre es cuando me salgo de todo el sistema, no se si esto es lo que esta provocando que aveces el sistema se ponga lento..aqui tengo una pregunta.

1.¿Cómo hacer para que estas tablas se borren cuando me salga del reporte?
y ver si de esa manera la tempbd ya no crece tanto y deja de estar lento el sistema..por favor si alguien me puede apoyar se lo agradeceré mucho...saludos,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:Tablas temporales

Publicado por roger (173 intervenciones) el 16/03/2009 20:03:17
pues si es estrictamente necesario que uses las tablas temporales, cuando hagas la consulta final que te retorna los datos, la borras luego, le haces un drop table, de lo contrario se borra cuando se cierra la conexion con sql. Puedes tener otras opciones, como variables tipo tabla, que no se almacenan en la tempdb, son mas rapidas, pero tienen sus limitaciones, dependeria de la complejidad con la que estes usando las temporales; por ejemplo, las variables tipo tabla no pueden llevar indices.
Pero basicamente es eso, haces lo que tengas que hacer con tu tabla temporal, haces el select final que retorna los datos del reporte, y luego de ese select, haces el drop table
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales

Publicado por Ivonne (50 intervenciones) el 16/03/2009 20:08:21
Gracias por contestar, osea que al final de la consulta que hace que se visualice los datos en el reporte ponga:

if exists (select [id] from tempdb..sysobjects where id = Object_Id('tempdb..#vvcredito') and type = 'U') drop table #vvcredito

para que se elimine la tabla temporal de la tempdb al cerrar el reporte?..saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Tablas temporales

Publicado por roger (173 intervenciones) el 17/03/2009 17:35:19
pero considero que la comprobacion sobra, tu sabes que la tabla temporal existe, porque la acabaste de crear, y si hubiera algun fallo, ni siquiera habrias llegado hasta ese punto del codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:Tablas temporales

Publicado por Isaias (3182 intervenciones) el 18/03/2009 20:48:20
Exacto, una tabla temporal, no debe validarse si existe o no, ya que NUNCA existira, solo y solo, cuando la conexion esta abierta.

Alguien me dijo, entonces si 2 o mas usuarios crean la tabla #ejemplo, ¿utilizan la misma tabla?.

La respuesta es NO, SQL Server, le da un ID de objeto diferente a cada tabla temporal creada y puede haber 1000 usuarios creando al mismo tiempo la tabla #ejemplo y todas tendran un ID diferente.

Las tablas temporales son de "usese y tirese (al final del proceso o conexion)".

Es correcto, se puede utilizar una variable tipo TABLE, pero cuidado, recuerden que estas se crean en memoria y si mi proceso crea 1000 variables tablas con 1 millon de registros cada una, seguramente y sin duda que el servidor se vera en problemas con la memoria.

Se necesitaria saber, el porqu de utilizar tablas temporales para sacar un reporte.

"Si puede evitar el uso de tablas temporales, no lo dude 2 veces, evitelas".

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar