Como puedo mejorar este SP se aceptan todo tipo de sugerencias y criticas

31/12/2004 - 16:29 por cato | Informe spam
- Indexarian alguno de los campos
- Hay alguna manera de mejorar esto
- es mejor hacer cada consulta en forma directa
- Seria mejor crear una vista

ATTE
GBARAHONA
CHILE

PROCEDURE SpdevFB (@id_b01 NUMERIC (9))AS

BEGIN


SELECT
(Tipo_Registro+Niv_Registro+Niv_Detalle+Cod_Grupo+Des_Grupo+Min_totales+Tot_
Grupo)
FROM B01
WHERE ID_B01 =@ID_B01

SELECT
(Tipo_Registro+'02'+Niv_Registro+Cod_SubGrupo+Des_SubGrupo+Tot_SubGrupo+Min_
SubGrupo+Num_Unidades)
FROM B02
WHERE ID_B01 =@ID_B01

SELECT
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Cod_PlanCBasico+Tot_MinGrupo)
FROM DC1
WHERE ID_B01=@ID_B01
ORDER BY ID_DC1

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado)
FROM DC2
WHERE ID_B01=@ID_B01
ORDER BY ID_DC2

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Cod_Concepto+Tot_abonado+Tot_MinGrupo)
FROM DC3
WHERE ID_B01=@ID_B01
ORDER BY ID_DC3

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Num_Unidades)
FROM DC4
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Fec_Pago+Num_Folio)
FROM DC5
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Des_Saldo+Tot_Documen
to+Num_Folio+Fec_Emision)
FROM DC6
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Tip_Concepto+Des_Cuot
a+Tot_Cuota+Num_Cuotas+Seq_Cuota+Num_Folio+Fec_Emision)
FROM DC7
WHERE ID_B01=@ID_B01
ORDER BY ID_DC7

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_celul
ar+Des_Transaccion+Tot_Transaccion+Fec_Transaccion)
FROM DC8
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_registro+Des_RegSubTotal+Tot_Transaccion+Tot_Minutos)
FROM S00
WHERE ID_B01=@ID_B01
order by id_s00

END

Preguntas similare

Leer las respuestas

#1 Tinoco
31/12/2004 - 16:47 | Informe spam
Hola Cato,

* Tener varios Selects en un SP no es problema, a menos que no necesites
todos los datos a la misma vez.
* Yo utilizaria un SP y no una vista.
* Si tienes problemas de lentitud, en un principio creo que un Indice por el
campo [ID_B01] en cada una de las tablas seria una buena idea. Me imagino que
es un indice NonClustered, Si puede ser Clustered... Mejor!

Tinoco.

"cato" wrote:

- Indexarian alguno de los campos
- Hay alguna manera de mejorar esto
- es mejor hacer cada consulta en forma directa
- Seria mejor crear una vista

ATTE
GBARAHONA
CHILE

PROCEDURE SpdevFB (@id_b01 NUMERIC (9))AS

BEGIN


SELECT
(Tipo_Registro+Niv_Registro+Niv_Detalle+Cod_Grupo+Des_Grupo+Min_totales+Tot_
Grupo)
FROM B01
WHERE ID_B01 =@ID_B01

SELECT
(Tipo_Registro+'02'+Niv_Registro+Cod_SubGrupo+Des_SubGrupo+Tot_SubGrupo+Min_
SubGrupo+Num_Unidades)
FROM B02
WHERE ID_B01 =@ID_B01

SELECT
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Cod_PlanCBasico+Tot_MinGrupo)
FROM DC1
WHERE ID_B01=@ID_B01
ORDER BY ID_DC1

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado)
FROM DC2
WHERE ID_B01=@ID_B01
ORDER BY ID_DC2

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Cod_Concepto+Tot_abonado+Tot_MinGrupo)
FROM DC3
WHERE ID_B01=@ID_B01
ORDER BY ID_DC3

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Num_Unidades)
FROM DC4
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Fec_Pago+Num_Folio)
FROM DC5
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Des_Saldo+Tot_Documen
to+Num_Folio+Fec_Emision)
FROM DC6
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Tip_Concepto+Des_Cuot
a+Tot_Cuota+Num_Cuotas+Seq_Cuota+Num_Folio+Fec_Emision)
FROM DC7
WHERE ID_B01=@ID_B01
ORDER BY ID_DC7

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_celul
ar+Des_Transaccion+Tot_Transaccion+Fec_Transaccion)
FROM DC8
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_registro+Des_RegSubTotal+Tot_Transaccion+Tot_Minutos)
FROM S00
WHERE ID_B01=@ID_B01
order by id_s00

END



Respuesta Responder a este mensaje
#2 MAXI
31/12/2004 - 17:54 | Informe spam
Hola, pues yo voy a opinar distinto ;)

Para que tantos select en un SP? yo en lo particular lo separaria, luego
sino es mas dificil de mantener y ademas en algunos lenguajes de
programacion se marean con esto ;) y no saben como llenar el Recordset por
ej ;) si usas Dataset no hay drama pero..

Yo uso varios select cuando tengo una entidad por ej

Yo se que la entidad clientes ademas de traer los datos del cliente debe
traer el maestro de ciudades,provincias, etc, para poderlas poner en un
combo.

Entonces si armas un solo Sp's con todo esto, cuando quieras cargar el
Dataset te cargara un Datatable por Select y es muy practico, ademas me
gusta porque representa mejor a la entidad :-)




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"cato" escribió en el mensaje
news:%
- Indexarian alguno de los campos
- Hay alguna manera de mejorar esto
- es mejor hacer cada consulta en forma directa
- Seria mejor crear una vista

ATTE
GBARAHONA
CHILE

PROCEDURE SpdevFB (@id_b01 NUMERIC (9))AS

BEGIN


SELECT
(Tipo_Registro+Niv_Registro+Niv_Detalle+Cod_Grupo+Des_Grupo+Min_totales+Tot_
Grupo)
FROM B01
WHERE ID_B01 =@ID_B01

SELECT
(Tipo_Registro+'02'+Niv_Registro+Cod_SubGrupo+Des_SubGrupo+Tot_SubGrupo+Min_
SubGrupo+Num_Unidades)
FROM B02
WHERE ID_B01 =@ID_B01

SELECT
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Cod_PlanCBasico+Tot_MinGrupo)
FROM DC1
WHERE ID_B01=@ID_B01
ORDER BY ID_DC1

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado)
FROM DC2
WHERE ID_B01=@ID_B01
ORDER BY ID_DC2

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Cod_Concepto+Tot_abonado+Tot_MinGrupo)
FROM DC3
WHERE ID_B01=@ID_B01
ORDER BY ID_DC3

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Num_Unidades)
FROM DC4
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_Celul
ar+Des_Concepto+Tot_abonado+Fec_Pago+Num_Folio)
FROM DC5
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Des_Saldo+Tot_Documen
to+Num_Folio+Fec_Emision)
FROM DC6
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Tip_Concepto+Des_Cuot
a+Tot_Cuota+Num_Cuotas+Seq_Cuota+Num_Folio+Fec_Emision)
FROM DC7
WHERE ID_B01=@ID_B01
ORDER BY ID_DC7

select
(Tipo_Registro+Niv_Registro+Cod_SubGrupo+Tipo_SubGrupo+Num_Abonado+Num_celul
ar+Des_Transaccion+Tot_Transaccion+Fec_Transaccion)
FROM DC8
WHERE ID_B01=@ID_B01

select
(Tipo_Registro+Niv_registro+Des_RegSubTotal+Tot_Transaccion+Tot_Minutos)
FROM S00
WHERE ID_B01=@ID_B01
order by id_s00

END


Respuesta Responder a este mensaje
#3 Alberto Daniel
02/01/2005 - 03:00 | Informe spam
Hola Max,

Oye y como haces para identificar cada table dentro del DataSet?? es decir
le puedes dar un nombre a cada tabla desde el SQL?? o solo lo manejas con
los indices que te genera??

Saludos !!!
Respuesta Responder a este mensaje
#4 MAXI
02/01/2005 - 17:09 | Informe spam
Hola, lo manejo con los indices que genera, pero hay un patron por ahi que
lo maneja distinto :-) voy a ver si lo encuentro y te lo paso :-D




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"Alberto Daniel" escribió en el mensaje
news:%
Hola Max,

Oye y como haces para identificar cada table dentro del DataSet?? es decir
le puedes dar un nombre a cada tabla desde el SQL?? o solo lo manejas con
los indices que te genera??

Saludos !!!

Respuesta Responder a este mensaje
#5 Alberto Daniel
03/01/2005 - 03:44 | Informe spam
Ok, muchas gracias Maxi

"MAXI" wrote in message
news:%
Hola, lo manejo con los indices que genera, pero hay un patron por ahi que
lo maneja distinto :-) voy a ver si lo encuentro y te lo paso :-D




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

Msn Messenger:

"Alberto Daniel" escribió en el mensaje
news:%
Hola Max,

Oye y como haces para identificar cada table dentro del DataSet?? es
decir le puedes dar un nombre a cada tabla desde el SQL?? o solo lo
manejas con los indices que te genera??

Saludos !!!





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