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:
Mostrar la cita
esta
Mostrar la cita
registro).
Mostrar la cita
cursor,
Mostrar la cita
valores
Mostrar la cita
#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.
#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

Mostrar la cita
los registros de
Mostrar la cita
quiero unir toda esta
Mostrar la cita
articulo(kardex). Lo que
Mostrar la cita
con un cursor,
Mostrar la cita
saldos por registro).
Mostrar la cita
demora
Mostrar la cita
utilizar un cursor,
Mostrar la cita
actualizar los valores
Mostrar la cita
#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:
Mostrar la cita
esta
Mostrar la cita
registro).
Mostrar la cita
cursor,
Mostrar la cita
valores
Mostrar la cita
Ads by Google
Search Busqueda sugerida