Opinion de desempeño

11/07/2005 - 17:49 por SergioT | Informe spam
Hola

Tengo 2 consultas y me gustaria saber su opinion acerca de cual será mas
rapida

Para hubicarlos en las tablas, la idea es que una tabla de Debitos o deudas
(bDebitos) y otra de los pagos a cuenta (bDebitosPago)
La idea es sacar una lista de los debitos que aun estan pendientes de pago

bDebitos(Codcli, IdContrato,IdDebito,Importe)
bDebitoPago(IdPago,IdDebito,importe) IdDebito es fk a bDebito

La pregunta es: Cual de las 2 consultas será mas rapida??

Primera version: Resuelto en una consulta
=SELECT D.IdContrato,D.codCli,D.IdDebito,
sum(D.importe) as Debitos,
coalesce(sum( C.importe),0) as Pagos,
sum(D.importe) - coalesce(sum( C.importe),0) as Saldo
FROM bDebito D LEFT JOIN bDebitoPago C ON D.IdDebito =C.IdDebito
GROUP by D.Codcli,D.IdContrato,D.Iddebito
HAVING sum(D.importe) - coalesce(sum( C.importe),0)>0

Segunda Version: Resuelto en una consulta anidada
=SELECT *,debitos-pagos as Saldo FROM (
SELECT D.IdContrato,D.codCli,D.IdDebito,
sum(D.importe) as Debitos,
coalesce(sum( C.importe),0) as Pagos
FROM bDebito D left join bDebitoPago C ON D.IdDebito
=C.IdDebito
GROUP by D.Codcli,D.IdContrato,D.Iddebito ) A
WHERE debitos>pagos

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
11/07/2005 - 18:19 | Informe spam
Hicistes un analizis de los planes de ejecucion?


AMB

"SergioT" wrote:

Hola

Tengo 2 consultas y me gustaria saber su opinion acerca de cual será mas
rapida

Para hubicarlos en las tablas, la idea es que una tabla de Debitos o deudas
(bDebitos) y otra de los pagos a cuenta (bDebitosPago)
La idea es sacar una lista de los debitos que aun estan pendientes de pago

bDebitos(Codcli, IdContrato,IdDebito,Importe)
bDebitoPago(IdPago,IdDebito,importe) IdDebito es fk a bDebito

La pregunta es: Cual de las 2 consultas será mas rapida??

Primera version: Resuelto en una consulta
=> SELECT D.IdContrato,D.codCli,D.IdDebito,
sum(D.importe) as Debitos,
coalesce(sum( C.importe),0) as Pagos,
sum(D.importe) - coalesce(sum( C.importe),0) as Saldo
FROM bDebito D LEFT JOIN bDebitoPago C ON D.IdDebito =C.IdDebito
GROUP by D.Codcli,D.IdContrato,D.Iddebito
HAVING sum(D.importe) - coalesce(sum( C.importe),0)>0

Segunda Version: Resuelto en una consulta anidada
=> SELECT *,debitos-pagos as Saldo FROM (
SELECT D.IdContrato,D.codCli,D.IdDebito,
sum(D.importe) as Debitos,
coalesce(sum( C.importe),0) as Pagos
FROM bDebito D left join bDebitoPago C ON D.IdDebito
=C.IdDebito
GROUP by D.Codcli,D.IdContrato,D.Iddebito ) A
WHERE debitos>pagos




Respuesta Responder a este mensaje
#2 Ricardo Passians
12/07/2005 - 12:59 | Informe spam
Como ya te dijeron, debes comparar los planes de ejecucion pero fuera de eso
para esas cosas, como no veo que necesites sacarlo a un corte de fecha
puedes perfectamente tener la suma de los pagos en una vista indexada, y
simplemente hacer un left join de los debitos hacia la vista y el
performance sería de maravilla.


"SergioT" wrote in message
news:
Hola

Tengo 2 consultas y me gustaria saber su opinion acerca de cual será mas
rapida

Para hubicarlos en las tablas, la idea es que una tabla de Debitos o


deudas
(bDebitos) y otra de los pagos a cuenta (bDebitosPago)
La idea es sacar una lista de los debitos que aun estan pendientes de pago

bDebitos(Codcli, IdContrato,IdDebito,Importe)
bDebitoPago(IdPago,IdDebito,importe) IdDebito es fk a bDebito

La pregunta es: Cual de las 2 consultas será mas rapida??

Primera version: Resuelto en una consulta
=> SELECT D.IdContrato,D.codCli,D.IdDebito,
sum(D.importe) as Debitos,
coalesce(sum( C.importe),0) as Pagos,
sum(D.importe) - coalesce(sum( C.importe),0) as Saldo
FROM bDebito D LEFT JOIN bDebitoPago C ON D.IdDebito =C.IdDebito
GROUP by D.Codcli,D.IdContrato,D.Iddebito
HAVING sum(D.importe) - coalesce(sum( C.importe),0)>0

Segunda Version: Resuelto en una consulta anidada
=> SELECT *,debitos-pagos as Saldo FROM (
SELECT D.IdContrato,D.codCli,D.IdDebito,
sum(D.importe) as


Debitos,
coalesce(sum( C.importe),0) as Pagos
FROM bDebito D left join bDebitoPago C ON D.IdDebito
=C.IdDebito
GROUP by D.Codcli,D.IdContrato,D.Iddebito ) A
WHERE debitos>pagos



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