cálculo de stocks...

21/11/2003 - 13:16 por Tolo | Informe spam
hola,

a ver, esto volverá a llevar cola, espero, por el bién de todos...

Yo tengo en mi BD q el control de stock se calcula a partir de la suma de
las líneas de documentos. Pues bién, yo hasta ahora tenía una funcion
f_stockArticulo, q dado un id_articulo me calculaba su stock a partir de un
select con un sum where articulo =@articulo

Claro, esto muy chulo, pero cuando quería sacar un listado de stock, resulta
que esa función se disparaba para cada artículo lo cual hacía que la
consulta fuera relativamente lenta.

Pensando un poco decidí cambiar, borrar mi f_StockArticulo y crear un
f_ListadoStock, que también hace un sum de lineas, pero no filtra por
artículo, con lo cual en un solo select tengo el stock de todos los
artículos por almacen y tal. Bién, luego he reconstruido mi funcion
f_StockArticulo como:

select * from f_ListadoStock where articulo=@Articulo and almacen=@almacen

Claro, esto hace q el listado de stock sea muy eficiente, pero no se hasta
que punto puede ralentizar el sistema.

Que os parece, valdría la pena haber mantenido mi consulta f_StockArticulo
como estaba antes, o realmente no habrá cambios de velocidad. Mi decisión de
cambiarla fue que si mañana por el motivo que sea, necesito cambiar el
cálculo de stock, solamente tenga q ir a cambiarlo a una función, y así me
aseguro sencillez en el codigo y sobretodo mas fiabilidad.

gracias

Preguntas similare

Leer las respuestas

#6 Accotto Maximiliano D.
21/11/2003 - 19:49 | Informe spam
Gracias por tus comentarios Javier!! aunque hay veces q no coincidamos en
algunas cosas creo q cada uno de los 2 hace lo mejor no?

Ademas es muy bueno compartir opiniones mientras sean constructivas asi q yo
te agradesco y te agradecere cada vez q lo hagas (como ahora)

Compatir lo q sabemos cada uno y las experiencias ayudan y mucho de
verdad!!!

Un saludo como siempre

Maximiliano Damian Accotto
"Javier Loria" escribió en el mensaje
news:
Hola Maximiliano:
Pero eso que haces esta bien, lo unico malo es que creas que eso es
desnormalizar.
Eso que sugieres es TECNICAMENTE correcto y NO creo que rompa ninguna


de
las 3 primeras reglas normales.
1) Esta en Primer Forma Normal porque las columnas son "atomicas" y no
hay grupos Repetidos de Informacion.
2) Esta en Segunda Forma Normal porque las columnas no llaves son
totalmente dependientes de la Llave.
3) Esta en Tercera Forma Normal porque las columnas no llaves son
mutuamente independientes.
El como la haga Tolo, depende enteramente de su gusto, a mi
particularmente me parece una locura que el Saldo se calcule una y otra


vez
sobre los movimientos, claro que es solo mi opinion basada en mi


experiencia
y sin mayor criterio tecnico.
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.

Accotto Maximiliano D. escribio:
> Tolo !! jeje como estas con estos temas!! vas a tener que invitar una
> cena para todos cheee :-)
>
> Mira yo por lo menos no lo veo mal!! aunque disiente de la forma, aca
> si que va a discutirse esto:
>
> Yo para esto Desnormalizo la BDD, por lo cual en mi maestro de
> Articulos y de Almacenes tengo un campo Qty_on_hand que es el Stock
> (se actualiza por triggers)
>
> Pero no entremos en polemicas, son solo formas de hacer las cosas,
> creo que cada uno tiene una realidad,practica y experiencia.
>
> Yo la desnormalice en este caso porque la consulta de Stock eran muy
> complejas sino y ademas se me ponian un poco densas en algunos casos
> (tenemos muchos articulos y transacciones)
>
> Un saludo
>
>> hola,
>>
>> a ver, esto volverá a llevar cola, espero, por el bién de todos...
>>
>> Yo tengo en mi BD q el control de stock se calcula a partir de la
>> suma de las líneas de documentos. Pues bién, yo hasta ahora tenía
>> una funcion f_stockArticulo, q dado un id_articulo me calculaba su
>> stock a partir de un select con un sum where articulo =@articulo
>>
>> Claro, esto muy chulo, pero cuando quería sacar un listado de stock,
>> resulta que esa función se disparaba para cada artículo lo cual
>> hacía que la consulta fuera relativamente lenta.
>>
>> Pensando un poco decidí cambiar, borrar mi f_StockArticulo y crear un
>> f_ListadoStock, que también hace un sum de lineas, pero no filtra por
>> artículo, con lo cual en un solo select tengo el stock de todos los
>> artículos por almacen y tal. Bién, luego he reconstruido mi funcion
>> f_StockArticulo como:
>>
>> select * from f_ListadoStock where articulo=@Articulo and
>> almacen=@almacen
>>
>> Claro, esto hace q el listado de stock sea muy eficiente, pero no se
>> hasta que punto puede ralentizar el sistema.
>>
>> Que os parece, valdría la pena haber mantenido mi consulta
>> f_StockArticulo como estaba antes, o realmente no habrá cambios de
>> velocidad. Mi decisión de cambiarla fue que si mañana por el motivo
>> que sea, necesito cambiar el cálculo de stock, solamente tenga q ir
>> a cambiarlo a una función, y así me aseguro sencillez en el codigo y
>> sobretodo mas fiabilidad.
>>
>> gracias


Respuesta Responder a este mensaje
#7 Accotto Maximiliano D.
21/11/2003 - 21:40 | Informe spam
Javier !! porque pensas q es una locura calcularlos por cada movimiento
digamos (ademas de performance)

si queres q ese valor se mantenga con integridad que haces vos?

por ej te cuento el mio y porque lo hago por movimiento.

La tabla movimientos se le aplican de varios origenes (ASp,ERP,otros Soft)

Y muy frecuentemente hay q ver los Saldos de los Articulos, sea por el ERP
(q no lo puedo modificar) asp y otras aplicaciones Cliente.

Por eso cada vez q se hace un insert en movimientos Actualizo la Cabecera



Maximiliano Damian Accotto
"Javier Loria" escribió en el mensaje
news:
Hola Maximiliano:
Pero eso que haces esta bien, lo unico malo es que creas que eso es
desnormalizar.
Eso que sugieres es TECNICAMENTE correcto y NO creo que rompa ninguna


de
las 3 primeras reglas normales.
1) Esta en Primer Forma Normal porque las columnas son "atomicas" y no
hay grupos Repetidos de Informacion.
2) Esta en Segunda Forma Normal porque las columnas no llaves son
totalmente dependientes de la Llave.
3) Esta en Tercera Forma Normal porque las columnas no llaves son
mutuamente independientes.
El como la haga Tolo, depende enteramente de su gusto, a mi
particularmente me parece una locura que el Saldo se calcule una y otra


vez
sobre los movimientos, claro que es solo mi opinion basada en mi


experiencia
y sin mayor criterio tecnico.
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.

Accotto Maximiliano D. escribio:
> Tolo !! jeje como estas con estos temas!! vas a tener que invitar una
> cena para todos cheee :-)
>
> Mira yo por lo menos no lo veo mal!! aunque disiente de la forma, aca
> si que va a discutirse esto:
>
> Yo para esto Desnormalizo la BDD, por lo cual en mi maestro de
> Articulos y de Almacenes tengo un campo Qty_on_hand que es el Stock
> (se actualiza por triggers)
>
> Pero no entremos en polemicas, son solo formas de hacer las cosas,
> creo que cada uno tiene una realidad,practica y experiencia.
>
> Yo la desnormalice en este caso porque la consulta de Stock eran muy
> complejas sino y ademas se me ponian un poco densas en algunos casos
> (tenemos muchos articulos y transacciones)
>
> Un saludo
>
>> hola,
>>
>> a ver, esto volverá a llevar cola, espero, por el bién de todos...
>>
>> Yo tengo en mi BD q el control de stock se calcula a partir de la
>> suma de las líneas de documentos. Pues bién, yo hasta ahora tenía
>> una funcion f_stockArticulo, q dado un id_articulo me calculaba su
>> stock a partir de un select con un sum where articulo =@articulo
>>
>> Claro, esto muy chulo, pero cuando quería sacar un listado de stock,
>> resulta que esa función se disparaba para cada artículo lo cual
>> hacía que la consulta fuera relativamente lenta.
>>
>> Pensando un poco decidí cambiar, borrar mi f_StockArticulo y crear un
>> f_ListadoStock, que también hace un sum de lineas, pero no filtra por
>> artículo, con lo cual en un solo select tengo el stock de todos los
>> artículos por almacen y tal. Bién, luego he reconstruido mi funcion
>> f_StockArticulo como:
>>
>> select * from f_ListadoStock where articulo=@Articulo and
>> almacen=@almacen
>>
>> Claro, esto hace q el listado de stock sea muy eficiente, pero no se
>> hasta que punto puede ralentizar el sistema.
>>
>> Que os parece, valdría la pena haber mantenido mi consulta
>> f_StockArticulo como estaba antes, o realmente no habrá cambios de
>> velocidad. Mi decisión de cambiarla fue que si mañana por el motivo
>> que sea, necesito cambiar el cálculo de stock, solamente tenga q ir
>> a cambiarlo a una función, y así me aseguro sencillez en el codigo y
>> sobretodo mas fiabilidad.
>>
>> gracias


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida