Ayuda [Optimizar el proceso de carga de un Kardex sin utilizar cur

14/12/2004 - 18:31 por Ricardo | Informe spam
Hola amigos del foro, tengo varias tablas que contienen los registros de
movimientos (ingresos, guias de salidas, ventas, etc). quiero unir toda esta
data y calcular los saldos y costos actuales por articulo(kardex). Lo que
pense hacer es pasar toda esta data a un temporal y luego, con un cursor,
barrerme toda la tabla y realizar los calculos(costos y saldos por registro).
el problema es que para una cantidad de 850,000 registros demora
demasiado...como podria optimizar este procedimiento sin utilizar un cursor,
ya que al usar un while para acceder a cada registro y actualizar los valores
del mismo, el tiempo de proceso es extremadamente largo.

Preguntas similare

Leer las respuestas

#1 Paulino Padial
14/12/2004 - 18:46 | Informe spam
Mas sencillo que eso, creo que deberias usar un DTS. Basicamente hacer esto.

Creas una vista que e devuelva los datos que necesitas, y esa la usas como
fuente de datos del DTS, y el destino la tabla que quieres ;)

creo que eso podria funcionar...

__________________________________________

Paulino Padial López
Murcia - España

Microsoft SQL-Server Administrator.
Microsoft Certified Solution Developer
Microsoft Certified Trainer
Oracle Certified Asociate
__________________________________________
"Ricardo" escribió en el mensaje
news:
Hola amigos del foro, tengo varias tablas que contienen los registros de
movimientos (ingresos, guias de salidas, ventas, etc). quiero unir toda


esta
data y calcular los saldos y costos actuales por articulo(kardex). Lo que
pense hacer es pasar toda esta data a un temporal y luego, con un cursor,
barrerme toda la tabla y realizar los calculos(costos y saldos por


registro).
el problema es que para una cantidad de 850,000 registros demora
demasiado...como podria optimizar este procedimiento sin utilizar un


cursor,
ya que al usar un while para acceder a cada registro y actualizar los


valores
del mismo, el tiempo de proceso es extremadamente largo.
Respuesta Responder a este mensaje
#2 Ricardo
14/12/2004 - 19:11 | Informe spam
Hola amigo no entiendo bien la parte en la que me dices que debo cargar la
vista, ya que esos valores recien van a ser calculados. Al principio de la
operación cargo todos los datos en una tabla temporal y eso demora
aproximadamente 2 minutos y puede ser aceptable por la cantidad de datos que
cargo. El problema es que recien ahi comienzo a realizar las operaciones para
obtener los costos y saldos por articulo.
Te agradeceria si fueras un poco mas explicito para poder entenderte.

Gracias anticipadamente.
Respuesta Responder a este mensaje
#3 ulises
14/12/2004 - 21:44 | Informe spam
Como no especificas la estructura de tus tablas es dificil
ayudarte, en todo caso, me parece que solo necesitarías
realizar varios JOIN de la tabla principal contra tablas
que contengan los precios y usando CASE determinar si se
usa uno u otro para el cálculo, por ejemplo si tienes las
tablas

PRINCIPAL
fila producto tipo(Ingreso/Salida) movimiento
1 100 I 100
2 100 S 50

COSTOS
producto costounitario
100 10.00

para calcular el costo de los productos solo necesitarias
ejcutar :

SELECT producto, SUM((CASE WHEN tipo = 'I' THEN 1 ELSE -1
END) * costounitario * movimiento)
FROM PRINCIPAL p JOIN COSTOS c ON p.producto = c.producto
GROUP BY producto

Saludos,
Ulises

Hola amigos del foro, tengo varias tablas que contienen


los registros de
movimientos (ingresos, guias de salidas, ventas, etc).


quiero unir toda esta
data y calcular los saldos y costos actuales por


articulo(kardex). Lo que
pense hacer es pasar toda esta data a un temporal y luego,


con un cursor,
barrerme toda la tabla y realizar los calculos(costos y


saldos por registro).
el problema es que para una cantidad de 850,000 registros


demora
demasiado...como podria optimizar este procedimiento sin


utilizar un cursor,
ya que al usar un while para acceder a cada registro y


actualizar los valores
del mismo, el tiempo de proceso es extremadamente largo.
.

Respuesta Responder a este mensaje
#4 Javier Loria
15/12/2004 - 00:13 | Informe spam
Hola:
Me gustaria opinar, pero es muy dificil si no nos pasas el esquema de
las tablas, no tiene que ser todo solo la parte relevante.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Ricardo" wrote in message
news:
Hola amigos del foro, tengo varias tablas que contienen los registros de
movimientos (ingresos, guias de salidas, ventas, etc). quiero unir toda


esta
data y calcular los saldos y costos actuales por articulo(kardex). Lo que
pense hacer es pasar toda esta data a un temporal y luego, con un cursor,
barrerme toda la tabla y realizar los calculos(costos y saldos por


registro).
el problema es que para una cantidad de 850,000 registros demora
demasiado...como podria optimizar este procedimiento sin utilizar un


cursor,
ya que al usar un while para acceder a cada registro y actualizar los


valores
del mismo, el tiempo de proceso es extremadamente largo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida