Hello,
I think that my query is as much tuned as possible can. However I am baffled by the "recheck condition" that always follow my index scan. Is this something normal or can I get rid of it somehow?
"HashAggregate (cost=2141.07..2141.16 rows=4 width=38)"
" -> Result (cost=0.00..2141.03 rows=4 width=38)"
" -> Append (cost=0.00..2140.99 rows=4 width=38)"
" -> Seq Scan on message_copies (cost=0.00..0.00 rows=1 width=68)"
" Filter: ((date_part('day'::text, msg_date_rec) = ANY ('{6}'::double precision[])) AND (date_trunc('day'::text, msg_date_rec) = ANY ('{"2012-01-06 00:00:00"}'::timestamp without time zone[])) AND (((((pos_georef1)::text || (pos_georef2)::text) || (pos_georef3)::text) || (pos_georef4)::text) = ANY ('{MKPM2648,MKPM2649,MKPM2650}'::text[])) AND (src_id = ANY ('{1,2,3,4,5,6,7,8,9,10}'::integer[])))"
" -> Bitmap Heap Scan on message_copies_wk0 message_copies (cost=139.41..2140.99 rows=3 width=28)"
" Recheck Cond: ((date_trunc('day'::text, msg_date_rec) = ANY ('{"2012-01-06 00:00:00"}'::timestamp without time zone[])) AND (src_id = ANY ('{1,2,3,4,5,6,7,8,9,10}'::integer[])) AND (((((pos_georef1)::text || (pos_georef2)::text) || (pos_georef3)::text) || (pos_georef4)::text) = ANY ('{MKPM2648,MKPM2649,MKPM2650}'::text[])))"
" Filter: (date_part('day'::text, msg_date_rec) = ANY ('{6}'::double precision[]))"
" -> Bitmap Index Scan on idx_message_copies_wk0_date_src_pos (cost=0.00..139.41 rows=507 width=0)"
" Index Cond: ((date_trunc('day'::text, msg_date_rec) = ANY ('{"2012-01-06 00:00:00"}'::timestamp without time zone[])) AND (src_id = ANY ('{1,2,3,4,5,6,7,8,9,10}'::integer[])) AND (((((pos_georef1)::text || (pos_georef2)::text) || (pos_georef3)::text) || (pos_georef4)::text) = ANY ('{MKPM2648,MKPM2649,MKPM2650}'::text[])))"
Kind Regards
Yiannis