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
 

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




Preguntas similares