Juntar varios resultados en uno solo

03/01/2005 - 05:21 por Jose | Informe spam
Tengo un programa de inventario que tiene varios tipos de transacciones con
atributos (campos) distintos, (conduce, entrada, ajuste, etc.) cada tipo
corresponde a una tabla encabezado, y cada tabla de estas tiene asociada una
tabla de detalle para indicar los items que componen la transaccion. Las
tablas de detalle tienen algunos campos comunes y algunos campos diferentes
por eso no las tengo en una sola tabla.

Tengo frecuentemente que hacer consultas de los movimientos de los items
entre fechas. El problema es que los movimientos estan repartidos en las
distintas tablas detalles citadas, son 5 tablas.

Pienso hacer un store procedure que me recorra todas estas 5 tablas de
detalle y me extraiga los datos filtrandolos por fechas pero para despues
juntarlos en un solo conjunto.

Alguien me comento que lo hiciera con una UNION. Pero creo haber leido que
las uniones son muy lentas en performance. Alguien me menciono de una Vista
pero tambien me dijeron que tenia que acerla con UNION y sigo sin entender
bien.

Cualquier ayuda para resolver esto se las agradezco.

Feliz 2005!! a todo este foro tan profesional y util para todos.


Jose Alberto

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
03/01/2005 - 09:58 | Informe spam
En ese caso tienes que utilizar el operador UNION, monta tu consulta a ver
que tal rendimiento tiene. Si no va suficientemente rápida, nos pasas más
información sobre tu estructura de tablas, numero de filas en cada una,
etc...

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose" escribió en el mensaje
news:
Tengo un programa de inventario que tiene varios tipos de transacciones
con
atributos (campos) distintos, (conduce, entrada, ajuste, etc.) cada tipo
corresponde a una tabla encabezado, y cada tabla de estas tiene asociada
una
tabla de detalle para indicar los items que componen la transaccion. Las
tablas de detalle tienen algunos campos comunes y algunos campos
diferentes
por eso no las tengo en una sola tabla.

Tengo frecuentemente que hacer consultas de los movimientos de los items
entre fechas. El problema es que los movimientos estan repartidos en las
distintas tablas detalles citadas, son 5 tablas.

Pienso hacer un store procedure que me recorra todas estas 5 tablas de
detalle y me extraiga los datos filtrandolos por fechas pero para despues
juntarlos en un solo conjunto.

Alguien me comento que lo hiciera con una UNION. Pero creo haber leido
que
las uniones son muy lentas en performance. Alguien me menciono de una
Vista
pero tambien me dijeron que tenia que acerla con UNION y sigo sin entender
bien.

Cualquier ayuda para resolver esto se las agradezco.

Feliz 2005!! a todo este foro tan profesional y util para todos.


Jose Alberto


Respuesta Responder a este mensaje
#2 Jose
03/01/2005 - 13:01 | Informe spam
Claro, aprovecho para pasar la composicion de cada tabla y los indices, pues
no estoy seguro si son los mas apropiados sobre todo no se como elegir un
indice clustered. (posteo otro hilo con ese tema para que este separado)

Agradezco su recomendaciones.
Como dije es un sistema de control de inventario (estrictamente de
inventario).

Son 4 tablas de detalle (hay una quinta pero sera eliminada) con distintos
campos pero todas tienen estos campos comunes:

Documento Int, Linea Int Identity, Fecha SmallDateTime, ItemNo Char(8),
Cantidad Int, Costo Numeric(12,2)

la PK se compone de Documento, Linea Clustered

Tengo un Indice normal en columna Fecha y otro en ItemNo

son 4 tablas: dEntrada, dSalida, dAjuste, dProduccion (equivalentemente
hay una hEntrada, hSalida, hAjuste, hProduccion para cada encabezado de
transaccion pero el asunto es con las de detalle)

En cantidad de filas en el momento de este post tienen:

Valores aproximados
dEntrada 1,500,000 filas
dSalida 2,000,000 filas
dAjuste 500,000 filas
dProduccion 5,000,000 filas
dVenta 3,000,000 filas

Las consultas son tanto por rango de fechas como por rango de items como
rangos de items mas fechas.

Nota: no se si influye pero las transacciones que se registran son
modificables y para actualizar los detalles yo primero borro los detalles
(delete) del numero de documento que se esta modificando y luego los
inserto como nuevos (insert) para ese documento, esto debido a que tengo un
trigger en delete y en insert para mantener actualizadaslas existencias en
otra tabla ITEM que me guarda los codigos de los items y es mas facil asi
que con update.


Gracias amigos por su ayuda
Respuesta Responder a este mensaje
#3 Jose
03/01/2005 - 13:09 | Informe spam

Valores aproximados
dEntrada 1,500,000 filas
dSalida 2,000,000 filas
dAjuste 500,000 filas
dProduccion 5,000,000 filas
dVenta 3,000,000 filas




Ojo: dVenta decidi que la voy a juntar con dSalida porque practicamente
tienen iguales campos, para dejar solo 4 tablas.
Respuesta Responder a este mensaje
#4 Salvador Ramos
03/01/2005 - 13:32 | Informe spam
Pues en ese caso no te queda más remedio que utilizar UNION, e intentar
tener los índices más apropiados, para ello te puedes ayudar el Index Tuning
Wizard.

Otra alternativa que podría probar a ver que tal se comporta en este caso es
la de utilizar una vista indexada.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose" escribió en el mensaje
news:
>
Valores aproximados
dEntrada 1,500,000 filas
dSalida 2,000,000 filas
dAjuste 500,000 filas
dProduccion 5,000,000 filas
dVenta 3,000,000 filas




Ojo: dVenta decidi que la voy a juntar con dSalida porque practicamente
tienen iguales campos, para dejar solo 4 tablas.


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