Tablas Temporales Vs Cursores en sql2000

03/05/2005 - 17:18 por Developers | Informe spam
Amigos cual es la mejor forma de trabajar con datos temporales, usando
Tablas Temporales #mitabla o usar cursores temporales...

Tengo una consulta que obligadamente tengo que usar un Repositorio temporal
para completar dicha operacion.


Gracias x sus comentarios

Preguntas similare

Leer las respuestas

#6 Developers
03/05/2005 - 19:12 | Informe spam
Gracias Amigo por la ayuda.




"Alejandro Mesa" escribió en el
mensaje news:
En este caso te recomendaria usar una variable tipo tabla. De esta forma
evitarias que tu procedimeinto se recompile cada vez que lo ejecutas.

declare @t table ()

insert into @t (...)
SELECT
I.CDG_ZON,
I.COD_ITE,
SUM(I.STK_INI) AS STOCK
FROM
D_INVE_ATG I
WHERE
I.ANHO='2005'
AND I.COD_ITE='20220034'
AND ((I.CDG_ZON='02' AND I.AREA<='12') OR (I.CDG_ZON<>'02'))
GROUP BY
I.ANHO,
I.CDG_ZON,
I.COD_ITE

insert into @t (...)
SELECT
DMV.CDG_ZON,
DMV.COD_ITE,
SUM(DMV.ING_ITE-DMV.SAL_ITE) AS STOCK
FROM
D_MOVI_ATG DMV
WHERE
DMV.ANHO='2005'
AND DMV.COD_ITE='20220034'
AND DMV.ANU <> '*'
AND
DMV.FASN <> 'N'
AND LEFT(DMV.DOC_REF,2) <> 'IK'
AND LEFT(DMV.DOC_REF,2) <> 'SK'
AND LEFT(DMV.DOC_REF,2) <> 'SD'
AND LEFT(DMV.DOC_REF,2) <> 'AT'
AND LEFT(DMV.DOC_REF,2) <> 'TA'
AND ((DMV.CDG_ZON='02' AND DMV.AREA<='12') OR (DMV.CDG_ZON<>'02'))
GROUP BY
DMV.ANHO,
DMV.CDG_ZON,
DMV.COD_ITE

SELECT
D.NUM_ITEM AS CODIGO,
D.DES_TAB AS ZONA,
TP.COD_ITE AS COD_PROD,
IT.DET_ITE AS
PRODUCTO,
IT.MEDIDA,
SUM(STOCK) AS STOCK
FROM
D_TABLA D
LEFT JOIN
@t TP
ON TP.CDG_ZON = RIGHT(D.NUM_ITEM,2)
LEFT JOIN
M_ITEM_ATG IT
ON IT.COD_ITE=TP.COD_ITE
WHERE
D.CDG_TAB='P02' AND D.NUM_ITEM <> '000'
GROUP BY
D.NUM_ITEM,
D.DES_TAB,
TP.COD_ITE,
IT.DET_ITE,
IT.MEDIDA
go

otra cosa, puedes cambiar:

...
AND LEFT(DMV.DOC_REF,2) <> 'IK'
AND LEFT(DMV.DOC_REF,2) <> 'SK'
AND LEFT(DMV.DOC_REF,2) <> 'SD'
AND LEFT(DMV.DOC_REF,2) <> 'AT'
AND LEFT(DMV.DOC_REF,2) <>'TA'
...

por :

...
AND LEFT(DMV.DOC_REF,2) not in ('IK', 'SK', 'SD', 'AT', 'TA')
...


AMB

"Developers" wrote:

> realmente el repositorio temporal tendra a lo mucho 10 filas. Te paso mi
> sentencia para haber si estoy haciendo bien las cosas
>
> SELECT I.CDG_ZON, I.COD_ITE, SUM(I.STK_INI) AS STOCK
> INTO #TMPSTOCK
> FROM D_INVE_ATG I
> WHERE I.ANHO='2005' AND I.COD_ITE='20220034' AND ((I.CDG_ZON='02' AND
> I.AREA<='12') OR (I.CDG_ZON<>'02'))
> GROUP BY I.ANHO,I.CDG_ZON, I.COD_ITE
> INSERT INTO #TMPSTOCK SELECT DMV.CDG_ZON, DMV.COD_ITE,
> SUM(DMV.ING_ITE-DMV.SAL_ITE) AS STOCK
> FROM D_MOVI_ATG DMV
> WHERE DMV.ANHO='2005' AND DMV.COD_ITE='20220034' AND DMV.ANU<>'*' AND
> DMV.FASN<>'N' AND LEFT(DMV.DOC_REF,2)<>'IK' AND


LEFT(DMV.DOC_REF,2)<>'SK'
> AND LEFT(DMV.DOC_REF,2)<>'SD' AND LEFT(DMV.DOC_REF,2)<>'AT' AND
> LEFT(DMV.DOC_REF,2)<>'TA' AND ((DMV.CDG_ZON='02' AND DMV.AREA<='12') OR
> (DMV.CDG_ZON<>'02'))
> GROUP BY DMV.ANHO, DMV.CDG_ZON, DMV.COD_ITE
>
> SELECT D.NUM_ITEM AS CODIGO, D.DES_TAB AS ZONA, TP.COD_ITE AS COD_PROD,
> IT.DET_ITE AS PRODUCTO, IT.MEDIDA, SUM(STOCK) AS STOCK
> FROM D_TABLA D
> LEFT JOIN #TMPSTOCK TP ON TP.CDG_ZON=RIGHT(D.NUM_ITEM,2)
> LEFT JOIN M_ITEM_ATG IT ON IT.COD_ITE=TP.COD_ITE
> WHERE D.CDG_TAB='P02' AND D.NUM_ITEM<>'000'
> GROUP BY D.NUM_ITEM, D.DES_TAB, TP.COD_ITE, IT.DET_ITE, IT.MEDIDA
>
> DROP TABLE #TMPSTOCK
>
>
> gracias x los comentarios
>
>
>
> "Alejandro Mesa" escribió en


el
> mensaje news:
> > Siempre es mas ventajoso evitar cursores los mas que se pueda, pues


SQL
> > Server esta configurado o desarrollado para obtener mejor rendimineto


en
> > operaciones de conjunto y no en operaciones fila a fila. En cuanto a


usar
> una
> > tabla temporal o una variable tipo tabla, depende de cuantas filas
> insertaras
> > en este repositorio temporal y si necesitaras indices o no.
> >
> >
> > AMB
> >
> > "Developers" wrote:
> >
> > > Amigos cual es la mejor forma de trabajar con datos temporales,


usando
> > > Tablas Temporales #mitabla o usar cursores temporales...
> > >
> > > Tengo una consulta que obligadamente tengo que usar un Repositorio
> temporal
> > > para completar dicha operacion.
> > >
> > >
> > > Gracias x sus comentarios
> > >
> > >
> > >
> > >
>
>
>
Respuesta Responder a este mensaje
#7 Carlo Sorrel
03/05/2005 - 21:38 | Informe spam
Me sumo a Alejandro, muy bueno el articulo
Gracias Maxi.
"Alejandro Mesa" escribió en el
mensaje news:
Muy bueno el articulo.


Saludos,

Alejandro Mesa

"Maxi" wrote:

> Hola, te paso un articulo del porque no se deberian usar cursores, vos


saca
> tus propias conclusiones ;)
>
>


http://www.configuracionesintegrale...p?articulo)5
>
>
>
> Salu2
> Maxi
>
>
> "Developers" escribió en el mensaje
> news:ewSWlN$
> > Amigos cual es la mejor forma de trabajar con datos temporales, usando
> > Tablas Temporales #mitabla o usar cursores temporales...
> >
> > Tengo una consulta que obligadamente tengo que usar un Repositorio
> > temporal
> > para completar dicha operacion.
> >
> >
> > Gracias x sus comentarios
> >
> >
> >
>
>
>
Respuesta Responder a este mensaje
#8 Maxi
03/05/2005 - 22:08 | Informe spam
Gracias Chicos :-)


Salu2
Maxi


"Carlo Sorrel" escribió en el mensaje
news:
Me sumo a Alejandro, muy bueno el articulo
Gracias Maxi.
"Alejandro Mesa" escribió en el
mensaje news:
Muy bueno el articulo.


Saludos,

Alejandro Mesa

"Maxi" wrote:

> Hola, te paso un articulo del porque no se deberian usar cursores, vos


saca
> tus propias conclusiones ;)
>
>


http://www.configuracionesintegrale...p?articulo)5
>
>
>
> Salu2
> Maxi
>
>
> "Developers" escribió en el mensaje
> news:ewSWlN$
> > Amigos cual es la mejor forma de trabajar con datos temporales,
> > usando
> > Tablas Temporales #mitabla o usar cursores temporales...
> >
> > Tengo una consulta que obligadamente tengo que usar un Repositorio
> > temporal
> > para completar dicha operacion.
> >
> >
> > Gracias x sus comentarios
> >
> >
> >
>
>
>




Respuesta Responder a este mensaje
#9 Developers
04/05/2005 - 01:57 | Informe spam
Lo mismo digo muy buen articulo... pero en mi Caso tuve que usar una
Variable Tipo table("Gracias Alejandro Mesa") para dar solucion a Mi
problema ya di mas vueltas que Pollo a la brasa y no encontre al menos
una solucion.


Gracias a Todos x todaa la ayuda brindada



"Maxi" escribió en el mensaje
news:%23FpcEl$
Hola, te paso un articulo del porque no se deberian usar cursores, vos


saca
tus propias conclusiones ;)

http://www.configuracionesintegrale...p?articulo)5



Salu2
Maxi


"Developers" escribió en el mensaje
news:ewSWlN$
> Amigos cual es la mejor forma de trabajar con datos temporales, usando
> Tablas Temporales #mitabla o usar cursores temporales...
>
> Tengo una consulta que obligadamente tengo que usar un Repositorio
> temporal
> para completar dicha operacion.
>
>
> Gracias x sus comentarios
>
>
>


Respuesta Responder a este mensaje
#10 Miguel Egea
04/05/2005 - 23:14 | Informe spam
Ojo con las variables de tipo tabla, no dejan de estar en tempdb y no tienen
ni índices ni estadísticas, por tanto solo son adecuadas si tienen muy muy
pocos datos.

Saludos
Miguel Egea
"Developers" escribió en el mensaje
news:
Lo mismo digo muy buen articulo... pero en mi Caso tuve que usar una
Variable Tipo table("Gracias Alejandro Mesa") para dar solucion a Mi
problema ya di mas vueltas que Pollo a la brasa y no encontre al
menos
una solucion.


Gracias a Todos x todaa la ayuda brindada



"Maxi" escribió en el mensaje
news:%23FpcEl$
Hola, te paso un articulo del porque no se deberian usar cursores, vos


saca
tus propias conclusiones ;)

http://www.configuracionesintegrale...p?articulo)5



Salu2
Maxi


"Developers" escribió en el mensaje
news:ewSWlN$
> Amigos cual es la mejor forma de trabajar con datos temporales, usando
> Tablas Temporales #mitabla o usar cursores temporales...
>
> Tengo una consulta que obligadamente tengo que usar un Repositorio
> temporal
> para completar dicha operacion.
>
>
> Gracias x sus comentarios
>
>
>






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