Skip site navigation (1) Skip section navigation (2)

Recheck condition...

From: Ioannis Anagnostopoulos <ioannis(at)anatec(dot)com>
To: pgsql-novice(at)postgresql(dot)org
Subject: Recheck condition...
Date: 2012-07-07 01:41:24
Message-ID: 4FF793C4.2030309@anatec.com (view raw or flat)
Thread:
Lists: pgsql-novice
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

Responses

pgsql-novice by date

Next:From: Gurjeet SinghDate: 2012-07-07 04:01:49
Subject: Re: Recheck condition...
Previous:From: Oliveiros d'Azevedo CristinaDate: 2012-07-06 18:16:56
Subject: Re: How can I re-use an expression in a SELECT?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group