SQL - que es peor? Cursores o tablas #temporales

 
Vista:

que es peor? Cursores o tablas #temporales

Publicado por Victor //:-) (38 intervenciones) el 16/08/2004 18:11:06
Hola Listeros:
He visto varias veces que no recomiendan usar Cursores y a veces ni tablas #temporales, pero en ocasiones, no se puede realizar de otra manera.
Mi pregunta es :
Que es lo que carga mas al motor de sql y al servidor(ram,procesarores), los cursores o las #temporales??????

saludos y espero sus comentarios lo mas amplios posibles
atte
Victor //:-)
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

RE:que es peor? Cursores o tablas #temporales

Publicado por Isaías Islas (5072 intervenciones) el 16/08/2004 19:00:11
Los "anti-cursores" dicen que el 99% de lo que se pretende hacer con un cursor, se hace comunmente con simple T-SQL.

Pero creo que menos "dañino" al performance del servidor son las tablas temporales, ya que a diferencia de los cursores, estan no se crean en memoria.
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

pero donde se crean entonces #temp

Publicado por Victor //:-) (38 intervenciones) el 16/08/2004 20:12:38
Disculpa, pero entonces donde se crean las #temporales, si no es en memoria???
Caso, crean como archivos fisicos temporales en el disco duro del servidor????
Y es cierto lo anterior, No es mas lento el trabajo en disco que en memoria???

Espero sus comentarios
y gracias por responder anteriormente.
saludos de mexico
atte Victor //:-)
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:pero donde se crean entonces #temp

Publicado por Isaías Islas (5072 intervenciones) el 17/08/2004 02:08:23
Hola Victor

Pues es una muy buena pregunta, las TABLAS TEMPORALES deben crearse FISICAMENTE en disco, ya que cada usuario que crea una temporal, se le asigna un prefijo (numerico) para distinguir una de otras.

¿Es mas lento?

Pues NO, porque si intentas crear un CURSOR de MILES de registros, estos seran cargados en la memoria, esto sin duda, le RESTA PERFORMANCE al servidor y si a eso le agregas que cada usuario que ejecute tu STORE, donde se crea dicho CURSOR, pues disminuye aun mas dicho performance.

Recuerda esto, SQL, NO fue diseñado para andar "recorriendo" registros UNO-A-UNO, fue creado para el proceso de LOTES de información.

Para que te des una idea.

Con un CURSOR que tenia que actualizar 45,000 registros, se tardaba aproximadamente 2.5 dias, con un T-SQL (bien programado), se redujo en 1.5 minutos, la misma actualizacion.

Saludos desde el D.F.
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