On Thu, Mar 31, 2011 at 11:33 PM, Kevin Grittner
<Kevin.Grittner@wicourts.gov> wrote:
> Greg Stark <gsstark@mit.edu> wrote:
>
>> your query does require reading all the data.
>
> Huh? =A0It requires reading all the data from at least *one* of the
> tables.
The query he posted a plan for was:
EXPLAIN ANALYZE select oi.id from order_items oi inner join
clients_orders co on oi.order_id =3D co.id;
And the plan for it looks like it's optimal to me:
'Hash Join (cost=3D780.55..1908023.16 rows=3D1027457 width=3D4) (actual
time=3D63.506..85607.003 rows=3D33768 loops=3D1)'
' Hash Cond: (oi.order_id =3D co.id)'
' -> Seq Scan on order_items oi (cost=3D0.00..1558536.52
rows=3D33843152 width=3D8) (actual time=3D0.005..69718.563 rows=3D33909137
loops=3D1)'
' -> Hash (cost=3D480.80..480.80 rows=3D23980 width=3D4) (actual
time=3D13.072..13.072 rows=3D23980 loops=3D1)'
' Buckets: 4096 Batches: 1 Memory Usage: 844kB'
' -> Seq Scan on clients_orders co (cost=3D0.00..480.80
rows=3D23980 width=3D4) (actual time=3D0.006..6.570 rows=3D23980 loops=3D1)'
'Total runtime: 85613.391 ms'
--=20
greg