Es la versión 8.2 de postgres.
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.