Re: Agilizar consultas sobre fechas

From: Manuel Alejandro Estevez Fernandez <stvzito(at)gmail(dot)com>
To: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Agilizar consultas sobre fechas
Date: 2009-10-01 17:29:05
Message-ID: 4AC4E6E1.7070400@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 01/10/09 12:13, Jaime Casanova escribió:
> On Thu, Oct 1, 2009 at 10:34 AM, Manuel Alejandro Estevez Fernandez
> <stvzito(at)gmail(dot)com> wrote:
>
>> Saludos a todos.
>>
>> Tengo la siguiente consulta:
>>
>> select vd.cantidad,vd.precio_venta_unidad_venta,vd.id_esquema_impuesto
>> from ventas_detalle vd, ventas v, articulos a
>> where v.id_sucursal=sucursal and
>> vd.id_sucursal=v.id_sucursal and
>> vd.id_venta=v.id_venta and
>> cast(v.fecha as date) = fecha_revision and
>> vd.id_articulo = a.id_articulo and
>> a.servicio is null
>>
>>
> un explain analyze ayudaria bastante a saber que esta pasando pero es
> obvio que la consulta esta retornando un producto cartesiano, fijate
> que la relacion entre ventas_detalle y ventas es: id_venta,
> id_corte_caja, numero_caja, id_sucursal y tu solo estas usando dos de
> esos en el JOIN
>
>
Si me di cuenta, bueno aqui la consulta corregida y el analize

select vd.cantidad,vd.precio_venta_unidad_venta,vd.id_esquema_impuesto
from ventas_detalle vd, ventas v, articulos a
where v.id_sucursal=11 and
vd.id_sucursal=v.id_sucursal and
vd.id_venta=v.id_venta and
v.numero_caja = vd.numero_caja and
v.id_corte_caja=vd.id_corte_caja and
cast(v.fecha as date) = '2009-08-13' and
vd.id_articulo = a.id_articulo and
a.id_servicio is null

"Nested Loop (cost=0.00..9.08 rows=1 width=23)"
" -> Nested Loop (cost=0.00..6.05 rows=1 width=31)"
" Join Filter: (("outer".id_venta = "inner".id_venta) AND
("inner".numero_caja = "outer".numero_caja) AND ("inner".id_corte_caja =
"outer".id_corte_caja))"
" -> Index Scan using ventas_detalle_id_sucursal_index on
ventas_detalle vd (cost=0.00..3.01 rows=1 width=51)"
" Index Cond: (id_sucursal = 11)"
" -> Index Scan using ventas_id_sucursal_index on ventas v
(cost=0.00..3.02 rows=1 width=16)"
" Index Cond: (id_sucursal = 11)"
" Filter: ((fecha)::date = '2009-08-13'::date)"
" -> Index Scan using articulos_pkey on articulos a (cost=0.00..3.01
rows=1 width=4)"
" Index Cond: ("outer".id_articulo = a.id_articulo)"
" Filter: (id_servicio IS NULL)"

Saludos.

--
Atentamente.

Manuel Alejandro Estévez Fernández

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2009-10-01 18:24:12 Re: Agilizar consultas sobre fechas
Previous Message Jaime Casanova 2009-10-01 17:13:32 Re: Agilizar consultas sobre fechas