Como mejorar consulta

19/04/2004 - 22:27 por Sergio | Informe spam
Esta es una consulta que realizo para generar un reporte, la verdad que esto
soluciona solo para una cantidad de registros, pero cuando tengo alrededor
de 50.000 registros lo hace lento, alguien podria ayudarme para mejorar esta
consulta
o estoy utilizando algo mal, o necesitare otras sentencias:

select asientodiario_cab.codigo as
codigocabecera,asientodiario_det.fecha,plandecuentas.nombre as
nombrecuenta,plandecuentas.codigo as cuenta,
asientodiario_det.debe,asientodiario_det.haber,asientodiario_det.detalle,
asientodiario_det.moneda,asientodiario_det.cotizacion

from asientodiario_cab, plandecuentas, asientodiario_det

where asientodiario_cab.codempresa = @codempresa
and asientodiario_det.fecha >= @fechadesde and asientodiario_det.fecha <@fechahasta
and asientodiario_cab.codigo >= @codigodesde And asientodiario_cab.codigo
<= @codigohasta
and asientodiario_cab.codempresa = asientodiario_det.codempresa
and asientodiario_cab.codigo = asientodiario_det.codigo
and plandecuentas.cod_empresa = asientodiario_det.codempresa
and plandecuentas.codigo = asientodiario_det.cuenta

order by codigocabecera, asientodiario_det.fecha

Gracias

Preguntas similare

Leer las respuestas

#1 Marcelo W. Lopez Cremona
19/04/2004 - 21:25 | Informe spam
Hola, prueba usando esta consulta

SELECT a.codigo as codigocabecera, ad.fecha, p.nombre as nombrecuenta,
p.codigo as cuenta, ad.debe, ad.haber, ad.detalle,
ad.moneda, ad.cotizacion
FROM asientoDiario_Cab a
INNER JOIN asientoDiario_det ad ON ad.codigo = a.codigo and
a.codEmpresa=ad.codEmpresa and ad.fecha between @fechadesde and @fechaHasta
INNER JOIN plandeCuentas p ON p.codEmpresa = d.codEmpresa and p.codigo ad.cuenta
WHERE a.codEmpresa = @codEmpresa and a.codigo between @codigoDesde and
@codigoHasta
ORDER BY codigoCabecera, ad.fecha

Recomendación: trata de usar INNER JOIN
suerte. y espero q te sirva.

Marcelo W. López
Tucumán - Argentina



"Sergio" escribió en el mensaje
news:
Esta es una consulta que realizo para generar un reporte, la verdad que


esto
soluciona solo para una cantidad de registros, pero cuando tengo alrededor
de 50.000 registros lo hace lento, alguien podria ayudarme para mejorar


esta
consulta
o estoy utilizando algo mal, o necesitare otras sentencias:

select asientodiario_cab.codigo as
codigocabecera,asientodiario_det.fecha,plandecuentas.nombre as
nombrecuenta,plandecuentas.codigo as cuenta,
asientodiario_det.debe,asientodiario_det.haber,asientodiario_det.detalle,
asientodiario_det.moneda,asientodiario_det.cotizacion

from asientodiario_cab, plandecuentas, asientodiario_det

where asientodiario_cab.codempresa = @codempresa
and asientodiario_det.fecha >= @fechadesde and asientodiario_det.fecha <> @fechahasta
and asientodiario_cab.codigo >= @codigodesde And


asientodiario_cab.codigo
<= @codigohasta
and asientodiario_cab.codempresa = asientodiario_det.codempresa
and asientodiario_cab.codigo = asientodiario_det.codigo
and plandecuentas.cod_empresa = asientodiario_det.codempresa
and plandecuentas.codigo = asientodiario_det.cuenta

order by codigocabecera, asientodiario_det.fecha

Gracias



Respuesta Responder a este mensaje
#2 Maximiliano D. A.
19/04/2004 - 21:59 | Informe spam
ola, ademas de tratar de cambiar por los Join, yo revisaria el plan de
ejecucion y tambien habria que ver los indices.

==
si nos quiere compartir el plan podria hacer esto:

set showplan_all on
Go

Su Select :-)

Bye




Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Sergio" escribió en el mensaje
news:
Esta es una consulta que realizo para generar un reporte, la verdad que


esto
soluciona solo para una cantidad de registros, pero cuando tengo alrededor
de 50.000 registros lo hace lento, alguien podria ayudarme para mejorar


esta
consulta
o estoy utilizando algo mal, o necesitare otras sentencias:

select asientodiario_cab.codigo as
codigocabecera,asientodiario_det.fecha,plandecuentas.nombre as
nombrecuenta,plandecuentas.codigo as cuenta,
asientodiario_det.debe,asientodiario_det.haber,asientodiario_det.detalle,
asientodiario_det.moneda,asientodiario_det.cotizacion

from asientodiario_cab, plandecuentas, asientodiario_det

where asientodiario_cab.codempresa = @codempresa
and asientodiario_det.fecha >= @fechadesde and asientodiario_det.fecha <> @fechahasta
and asientodiario_cab.codigo >= @codigodesde And


asientodiario_cab.codigo
<= @codigohasta
and asientodiario_cab.codempresa = asientodiario_det.codempresa
and asientodiario_cab.codigo = asientodiario_det.codigo
and plandecuentas.cod_empresa = asientodiario_det.codempresa
and plandecuentas.codigo = asientodiario_det.cuenta

order by codigocabecera, asientodiario_det.fecha

Gracias








Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.661 / Virus Database: 424 - Release Date: 19/04/2004
Respuesta Responder a este mensaje
#3 Jose Mariano Alvarez \(MUG\)
19/04/2004 - 22:53 | Informe spam
Si considero indices solo para esta consulta y sin analizarlo profundamente
podria tener:

asientodiario_cab debe tener indice por
codempresa
codigo

asientodiario_det deberia tener Indice por
codempresa
codigo
fecha

plandecuentas deberia tener Indice por
codempresa
codigo
Nombre (para usarlo de cover index)


select
asientodiario_cab.codigo as codigocabecera,
asientodiario_det.fecha,
plandecuentas.nombre as nombrecuenta,
plandecuentas.codigo as cuenta,
asientodiario_det.debe,
asientodiario_det.haber,
asientodiario_det.detalle,
asientodiario_det.moneda,
asientodiario_det.cotizacion
from asientodiario_cab
join asientodiario_det
on asientodiario_cab.codempresa = asientodiario_det.codempresa
and asientodiario_cab.codigo = asientodiario_det.codigo
join plandecuentas
on plandecuentas.cod_empresa = asientodiario_det.codempresa
and plandecuentas.codigo = asientodiario_det.cuenta

where asientodiario_cab.codempresa = @codempresa
and asientodiario_det.fecha >= @fechadesde
and asientodiario_det.fecha <= @fechahasta
and asientodiario_cab.codigo >= @codigodesde
And asientodiario_cab.codigo <= @codigohasta
order by
codigocabecera,
asientodiario_det.fecha



Jose Mariano Alvarez
jose (.) alvarez * *Arroba* * mug (.) org (.) ar
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


.
"Sergio" wrote in message
news:
Esta es una consulta que realizo para generar un reporte, la verdad que


esto
soluciona solo para una cantidad de registros, pero cuando tengo alrededor
de 50.000 registros lo hace lento, alguien podria ayudarme para mejorar


esta
consulta
o estoy utilizando algo mal, o necesitare otras sentencias:

select asientodiario_cab.codigo as
codigocabecera,asientodiario_det.fecha,plandecuentas.nombre as
nombrecuenta,plandecuentas.codigo as cuenta,
asientodiario_det.debe,asientodiario_det.haber,asientodiario_det.detalle,
asientodiario_det.moneda,asientodiario_det.cotizacion

from asientodiario_cab, plandecuentas, asientodiario_det

where asientodiario_cab.codempresa = @codempresa
and asientodiario_det.fecha >= @fechadesde and asientodiario_det.fecha <> @fechahasta
and asientodiario_cab.codigo >= @codigodesde And


asientodiario_cab.codigo
<= @codigohasta
and asientodiario_cab.codempresa = asientodiario_det.codempresa
and asientodiario_cab.codigo = asientodiario_det.codigo
and plandecuentas.cod_empresa = asientodiario_det.codempresa
and plandecuentas.codigo = asientodiario_det.cuenta

order by codigocabecera, asientodiario_det.fecha

Gracias



Respuesta Responder a este mensaje
#4 Adrian D. Garcia
20/04/2004 - 09:53 | Informe spam
Aqui se describe como se realiza el proceso de analisis de un query similar
al tuyo y se propone una solucion alternativa para mejorar el rendimiento
del mismo:

http://www.microsoft.com/spanish/ms...art144.asp

Saludos

Adrian D. Garcia
NDSoft
MCSD
"Jose Mariano Alvarez (MUG)" <jose.alvarez * *Arroba* * mug.org.ar> escribió
en el mensaje news:
Si considero indices solo para esta consulta y sin analizarlo


profundamente
podria tener:

asientodiario_cab debe tener indice por
codempresa
codigo

asientodiario_det deberia tener Indice por
codempresa
codigo
fecha

plandecuentas deberia tener Indice por
codempresa
codigo
Nombre (para usarlo de cover index)


select
asientodiario_cab.codigo as codigocabecera,
asientodiario_det.fecha,
plandecuentas.nombre as nombrecuenta,
plandecuentas.codigo as cuenta,
asientodiario_det.debe,
asientodiario_det.haber,
asientodiario_det.detalle,
asientodiario_det.moneda,
asientodiario_det.cotizacion
from asientodiario_cab
join asientodiario_det
on asientodiario_cab.codempresa = asientodiario_det.codempresa
and asientodiario_cab.codigo = asientodiario_det.codigo
join plandecuentas
on plandecuentas.cod_empresa = asientodiario_det.codempresa
and plandecuentas.codigo = asientodiario_det.cuenta

where asientodiario_cab.codempresa = @codempresa
and asientodiario_det.fecha >= @fechadesde
and asientodiario_det.fecha <= @fechahasta
and asientodiario_cab.codigo >= @codigodesde
And asientodiario_cab.codigo <= @codigohasta
order by
codigocabecera,
asientodiario_det.fecha



Jose Mariano Alvarez
jose (.) alvarez * *Arroba* * mug (.) org (.) ar
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar


.
"Sergio" wrote in message
news:
> Esta es una consulta que realizo para generar un reporte, la verdad que
esto
> soluciona solo para una cantidad de registros, pero cuando tengo


alrededor
> de 50.000 registros lo hace lento, alguien podria ayudarme para mejorar
esta
> consulta
> o estoy utilizando algo mal, o necesitare otras sentencias:
>
> select asientodiario_cab.codigo as
> codigocabecera,asientodiario_det.fecha,plandecuentas.nombre as
> nombrecuenta,plandecuentas.codigo as cuenta,
>


asientodiario_det.debe,asientodiario_det.haber,asientodiario_det.detalle,
> asientodiario_det.moneda,asientodiario_det.cotizacion
>
> from asientodiario_cab, plandecuentas, asientodiario_det
>
> where asientodiario_cab.codempresa = @codempresa
> and asientodiario_det.fecha >= @fechadesde and asientodiario_det.fecha


<> > @fechahasta
> and asientodiario_cab.codigo >= @codigodesde And
asientodiario_cab.codigo
> <= @codigohasta
> and asientodiario_cab.codempresa = asientodiario_det.codempresa
> and asientodiario_cab.codigo = asientodiario_det.codigo
> and plandecuentas.cod_empresa = asientodiario_det.codempresa
> and plandecuentas.codigo = asientodiario_det.cuenta
>
> order by codigocabecera, asientodiario_det.fecha
>
> Gracias
>
>
>


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