Re: Ayuda con query

From: "Luis Fernando Curiel Cabrera" <lcuriel(at)gmail(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>
Cc: "Lista de Postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con query
Date: 2008-05-28 22:49:11
Message-ID: 4fa3ceed0805281549r65d70908nde3286a4b312446a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Es la versión 8.2 de postgres.
Este es el explain analyze

Nested Loop (cost=0.00..1011893.02 rows=448 width=60)
-> Seq Scan on bssaledet (cost=0.00..1011395.40 rows=448 width=56)
Filter: (bsid = (subplan))
SubPlan
-> Result (cost=11.25..11.26 rows=1 width=0)
InitPlan
-> Limit (cost=0.00..11.25 rows=1 width=4)
-> Index Scan Backward using bssaledet_pkey on
bssaledet saledet (cost=0.00..5039.33 rows=448 width=4)
Filter: ((bsid IS NOT NULL) AND
((bsid_bsproduct)::text = ($0)::text))
-> Index Scan using bssale_pkey on bssale (cost=0.00..1.10 rows=1
width=12)
Index Cond: (bssale.bsid = bssaledet.bsid_bssale)

El caso es que es un reporte que piden la gente de importaciones, donde
muestro el stock atctual del producto, y quieren saber cuando fue la ultima
vez que se compro ese producto que cliente lo hizo. Esto es para que ellos
puedan hacer una planeación de compras. Asi sabran cuanto tiempo les durara
el producto que hay actualmente en el almacen y de esta forma planear la
fecha de compra de producto nuevo ...

On Wed, May 28, 2008 at 5:24 PM, Jaime Casanova <systemguards(at)gmail(dot)com>
wrote:

> On Wed, May 28, 2008 at 4:33 PM, Luis Fernando Curiel Cabrera
> <lcuriel(at)gmail(dot)com> wrote:
> >
> > Use la query que esta abajo y funciona, pero al momento de aplicarlo con
> la
> > base de datos en producción es mucho muy lento. Ya que son más de 300000
> > registros
> > SELECT
> > public.bssale.date,
> > public.bssaledet.bsid_bsproduct,
> > public.bssaledet.product,
> > public.bssaledet.quantity
> > FROM public.bssale INNER JOIN public.bssaledet ON public.bssale.bsid =
> > public.bssaledet.bsid_bssale
> > WHERE public.bssaledet.bsid = (
> > SELECT MAX(bsid)
> > FROM bssaledet saledet
> > WHERE saledet.bsid_bsproduct = public.bssaledet.product
> > )
>
> de que version de postgres estamos hablando? podrias mostrar el explain
> analyze?
> dependiendo de la version de postgres y los indices que tengas (lo que
> afecta al plan que escogera postgres) es posible que la consulta sea
> lente por el MAX()
>
> sin saber realmente lo que intentas hacer solo puedo suponer que algo
> como esto te puede ayudar:
>
> SELECT public.bssale.date, public.bssaledet.bsid_bsproduct,
> public.bssaledet.product,
> public.bssaledet.quantity
> FROM public.bssale INNER JOIN public.bssaledet ON
> public.bssale.bsid =
> public.bssaledet.bsid_bssale
> WHERE public.bssaledet.bsid = (SELECT bsid FROM bssaledet saledet
> WHERE
> saledet.bsid_bsproduct = public.bssaledet.product
> ORDER BY 1 DESC LIMIT 1)
>
> --
> Atentamente,
> Jaime Casanova
> Soporte y capacitación de PostgreSQL
> Guayaquil - Ecuador
> Cel. (593) 087171157
>

--
Luis Fernando Curiel Cabrera
- Professional ABACO DE BOLITAS Developer.
- Certified ABACO DE BOLITAS Programmer.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ruben Guinez 2008-05-28 22:54:17 Re: PostgreSQL en Chile, jornadas
Previous Message Sergio Valdes Hurtado 2008-05-28 22:48:05 Re: PostgreSQL en Chile, jornadas