| From: | "Ilia Kantor" <ilia(at)obnovlenie(dot)ru> | 
|---|---|
| To: | <pgsql-performance(at)postgresql(dot)org> | 
| Subject: | Bitmap scan when it is not needed | 
| Date: | 2005-08-28 20:48:40 | 
| Message-ID: | auto-000558491990@umail.ru | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-performance | 
explain analyze select * from objects_hier where tg && array[0] and id
<10000;
Bitmap Heap Scan on objects_hier  (cost=4.79..8.80 rows=1 width=337) (actual
time=0.110..0.110 rows=0 loops=1)
Recheck Cond: ((tg && '{0}'::integer[]) AND (id < 10000))
   ->  BitmapAnd  (cost=4.79..4.79 rows=1 width=0) (actual time=0.106..0.106
rows=0 loops=1)
         ->  Bitmap Index Scan on gistbla2  (cost=0.00..2.10 rows=30
width=0) (actual time=0.042..0.042 rows=0 loops=1)
Index Cond: (tg && '{0}'::integer[])
         ->  Bitmap Index Scan on ohid  (cost=0.00..2.44 rows=1240 width=0)
(actual time=0.058..0.058 rows=1255 loops=1)
Index Cond: (id < 10000)
I see, Bitmap is going to AND my indexes.. It read one with less number of
rows estimated the first (right)..
It found 0 records at gistbla2 index.
Then why is it reading ohid ?
Maybe a quickfix is possible for cases when 0 records is found to stop
reading other AND elements..
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Ilia Kantor | 2005-08-28 20:59:33 | Planner improvement suggestion | 
| Previous Message | Ilia Kantor | 2005-08-28 20:41:18 | intarray is broken ? (8.1b1) |