Tablas Temporales

27/12/2004 - 11:36 por Javier Carrascal | Informe spam
Buenos días y FELIZ NAVIDAD !!! a todo el foro.

Me gustaría haber si me pueden ayudar en la siguiente cuestión. Tengo un SP
en el cuál, creo una tabla temporal ... el caso, es que he llegado a leer
por ahí, que es más optimo crear una variable de tipo TABLE, antes que crear
una tabla temporal. Esto que tiene de cierto ??? cuál de las dos soluciones
es más optima ???

Más gráficamente, cuál de estas dos sentencias es más optima:

DECLARE @PuntosControl TABLE (
id_area BIGINT,
id_servicio BIGINT,
numero_mapa INT)

CREATE TABLE #PuntosControl (
id_area BIGINT,
id_servicio BIGINT,
numero_mapa INT)

Salu2

Preguntas similare

Leer las respuestas

#1 Tinoco
27/12/2004 - 13:05 | Informe spam
Hola Javier,

Microsoft recomienda utilizar las variables TABLE cuando sea posible.

Yo prefiero utilizar las tablas temporales, porque son mas flexibles, puedo
crear indices y utilizarlas en todas las instrucciones de insercion. Otra
cosa es el alcance, las tablas temporales las puedo utilizar en varios SP
ejecutados en la misma conexion.

Pero si se desea optimizar un SP, se puede utilizar este tipo de variable y
verificar su eficiencia.

Puedes revisar los BOL, ahi encontraras mas informacion.

Hermilson Tinoco.
Colombia

"Javier Carrascal" wrote:

Buenos días y FELIZ NAVIDAD !!! a todo el foro.

Me gustaría haber si me pueden ayudar en la siguiente cuestión. Tengo un SP
en el cuál, creo una tabla temporal ... el caso, es que he llegado a leer
por ahí, que es más optimo crear una variable de tipo TABLE, antes que crear
una tabla temporal. Esto que tiene de cierto ??? cuál de las dos soluciones
es más optima ???

Más gráficamente, cuál de estas dos sentencias es más optima:

DECLARE @PuntosControl TABLE (
id_area BIGINT,
id_servicio BIGINT,
numero_mapa INT)

CREATE TABLE #PuntosControl (
id_area BIGINT,
id_servicio BIGINT,
numero_mapa INT)

Salu2



Respuesta Responder a este mensaje
#2 Javier Carrascal
27/12/2004 - 13:09 | Informe spam
Gracias por la aclaración Tinoco ...
echaré un vistazo a los BOL, para saber más detalladamente las ventajas y
desventajas ...

Salu2


"Tinoco" escribió en el mensaje
news:
Hola Javier,

Microsoft recomienda utilizar las variables TABLE cuando sea posible.

Yo prefiero utilizar las tablas temporales, porque son mas flexibles,


puedo
crear indices y utilizarlas en todas las instrucciones de insercion. Otra
cosa es el alcance, las tablas temporales las puedo utilizar en varios SP
ejecutados en la misma conexion.

Pero si se desea optimizar un SP, se puede utilizar este tipo de variable


y
verificar su eficiencia.

Puedes revisar los BOL, ahi encontraras mas informacion.

Hermilson Tinoco.
Colombia

"Javier Carrascal" wrote:

> Buenos días y FELIZ NAVIDAD !!! a todo el foro.
>
> Me gustaría haber si me pueden ayudar en la siguiente cuestión. Tengo un


SP
> en el cuál, creo una tabla temporal ... el caso, es que he llegado a


leer
> por ahí, que es más optimo crear una variable de tipo TABLE, antes que


crear
> una tabla temporal. Esto que tiene de cierto ??? cuál de las dos


soluciones
> es más optima ???
>
> Más gráficamente, cuál de estas dos sentencias es más optima:
>
> DECLARE @PuntosControl TABLE (
> id_area BIGINT,
> id_servicio BIGINT,
> numero_mapa INT)
>
> CREATE TABLE #PuntosControl (
> id_area BIGINT,
> id_servicio BIGINT,
> numero_mapa INT)
>
> Salu2
>
>
>
Respuesta Responder a este mensaje
#3 Maxi
27/12/2004 - 13:23 | Informe spam
Hola, pues todo depende, veamos cuales son las diferencias entre ambos
modelos

Tablas temporales: Estas se almacenan en disco, BDD Tempdb

Variables tipo Tabla: Estas se almacenan en la RAM

La segunda es mas optima en principio pero hay que tener mucho cuidado
porque puede llegar a ser mortal el consumo de la RAM con lo cual el
servidor se podria poner muy ineficiente :(

Mi recomendacion:

No uses ni una ni la otra :-), el uso de tablas temporales deberia ser muy
pero muy contado con los dedos de la primer mano, este tipo de tecnicas son
generalmente aplicadas cuando no se puede resolver directamente un problema
con T-sql, y los casos que esto pueda pasar son remotos, ahora hay muchos
programadores que no disponen de todo el conocimiento de T-sql y esto puede
ser un causante del uso de tablas Temporales en lungares donde quizas no era
tan necesario.

Un abrazo


Salu2
Maxi


"Javier Carrascal" escribió en el mensaje
news:O73oj$$
Buenos días y FELIZ NAVIDAD !!! a todo el foro.

Me gustaría haber si me pueden ayudar en la siguiente cuestión. Tengo un
SP
en el cuál, creo una tabla temporal ... el caso, es que he llegado a leer
por ahí, que es más optimo crear una variable de tipo TABLE, antes que
crear
una tabla temporal. Esto que tiene de cierto ??? cuál de las dos
soluciones
es más optima ???

Más gráficamente, cuál de estas dos sentencias es más optima:

DECLARE @PuntosControl TABLE (
id_area BIGINT,
id_servicio BIGINT,
numero_mapa INT)

CREATE TABLE #PuntosControl (
id_area BIGINT,
id_servicio BIGINT,
numero_mapa INT)

Salu2


Respuesta Responder a este mensaje
#4 Javier Carrascal
27/12/2004 - 13:44 | Informe spam
Ufff, buena recomendación Maxi, no me lo había planteado desde ese punto de
vista.

El caso, es que el SP lo que primeramente hace es una selección previa de un
conjunto de datos, los cuales, voy a necesitar varias veces, a lo largo de
dicho SP, tanto para el uso de Cursores, como para selecciones filtradas,
etc ... Por eso, de guardar dichos datos en una variable de tipo tabla o en
un tabla temporal, para un manejo más sencillo. No se me ocurre otra forma,
a través de T-Sql de hacer esto, que no sea sustituir esta tabla o variable,
por la SELECT previamente realizada ... En cualquier caso, me has hecho
recapacitar, y le volveré a dar una vuelta al dichoso SP ...

Gracias


"Maxi" escribió en el mensaje
news:%
Hola, pues todo depende, veamos cuales son las diferencias entre ambos
modelos

Tablas temporales: Estas se almacenan en disco, BDD Tempdb

Variables tipo Tabla: Estas se almacenan en la RAM

La segunda es mas optima en principio pero hay que tener mucho cuidado
porque puede llegar a ser mortal el consumo de la RAM con lo cual el
servidor se podria poner muy ineficiente :(

Mi recomendacion:

No uses ni una ni la otra :-), el uso de tablas temporales deberia ser muy
pero muy contado con los dedos de la primer mano, este tipo de tecnicas


son
generalmente aplicadas cuando no se puede resolver directamente un


problema
con T-sql, y los casos que esto pueda pasar son remotos, ahora hay muchos
programadores que no disponen de todo el conocimiento de T-sql y esto


puede
ser un causante del uso de tablas Temporales en lungares donde quizas no


era
tan necesario.

Un abrazo


Salu2
Maxi


"Javier Carrascal" escribió en el mensaje
news:O73oj$$
> Buenos días y FELIZ NAVIDAD !!! a todo el foro.
>
> Me gustaría haber si me pueden ayudar en la siguiente cuestión. Tengo un
> SP
> en el cuál, creo una tabla temporal ... el caso, es que he llegado a


leer
> por ahí, que es más optimo crear una variable de tipo TABLE, antes que
> crear
> una tabla temporal. Esto que tiene de cierto ??? cuál de las dos
> soluciones
> es más optima ???
>
> Más gráficamente, cuál de estas dos sentencias es más optima:
>
> DECLARE @PuntosControl TABLE (
> id_area BIGINT,
> id_servicio BIGINT,
> numero_mapa INT)
>
> CREATE TABLE #PuntosControl (
> id_area BIGINT,
> id_servicio BIGINT,
> numero_mapa INT)
>
> Salu2
>
>


Respuesta Responder a este mensaje
#5 Maxi
27/12/2004 - 13:58 | Informe spam
Hola, Tablas temporales + Cursores = muerte del servidor :(

A ver, ninguna de las 2 tecnicas es buena :(, porque no hacemos una cosa a
ver que te parece:

Si me comentas (lo mas detallado y con ejemplos) lo que necesitas, podemos
ver como resolverlo, quizas no haga falta la tabla temporal y mucho menos el
cursor :-)


Salu2
Maxi


"Javier Carrascal" escribió en el mensaje
news:
Ufff, buena recomendación Maxi, no me lo había planteado desde ese punto
de
vista.

El caso, es que el SP lo que primeramente hace es una selección previa de
un
conjunto de datos, los cuales, voy a necesitar varias veces, a lo largo de
dicho SP, tanto para el uso de Cursores, como para selecciones filtradas,
etc ... Por eso, de guardar dichos datos en una variable de tipo tabla o
en
un tabla temporal, para un manejo más sencillo. No se me ocurre otra
forma,
a través de T-Sql de hacer esto, que no sea sustituir esta tabla o
variable,
por la SELECT previamente realizada ... En cualquier caso, me has hecho
recapacitar, y le volveré a dar una vuelta al dichoso SP ...

Gracias


"Maxi" escribió en el mensaje
news:%
Hola, pues todo depende, veamos cuales son las diferencias entre ambos
modelos

Tablas temporales: Estas se almacenan en disco, BDD Tempdb

Variables tipo Tabla: Estas se almacenan en la RAM

La segunda es mas optima en principio pero hay que tener mucho cuidado
porque puede llegar a ser mortal el consumo de la RAM con lo cual el
servidor se podria poner muy ineficiente :(

Mi recomendacion:

No uses ni una ni la otra :-), el uso de tablas temporales deberia ser
muy
pero muy contado con los dedos de la primer mano, este tipo de tecnicas


son
generalmente aplicadas cuando no se puede resolver directamente un


problema
con T-sql, y los casos que esto pueda pasar son remotos, ahora hay muchos
programadores que no disponen de todo el conocimiento de T-sql y esto


puede
ser un causante del uso de tablas Temporales en lungares donde quizas no


era
tan necesario.

Un abrazo


Salu2
Maxi


"Javier Carrascal" escribió en el mensaje
news:O73oj$$
> Buenos días y FELIZ NAVIDAD !!! a todo el foro.
>
> Me gustaría haber si me pueden ayudar en la siguiente cuestión. Tengo
> un
> SP
> en el cuál, creo una tabla temporal ... el caso, es que he llegado a


leer
> por ahí, que es más optimo crear una variable de tipo TABLE, antes que
> crear
> una tabla temporal. Esto que tiene de cierto ??? cuál de las dos
> soluciones
> es más optima ???
>
> Más gráficamente, cuál de estas dos sentencias es más optima:
>
> DECLARE @PuntosControl TABLE (
> id_area BIGINT,
> id_servicio BIGINT,
> numero_mapa INT)
>
> CREATE TABLE #PuntosControl (
> id_area BIGINT,
> id_servicio BIGINT,
> numero_mapa INT)
>
> Salu2
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida