Achilleas Mantzios - cloud <a.mantzios@xxxxxxxxxxxxxxxxxxxx> writes: > *FreeBSD* > > -> Index Only Scan using mail_vessel_addressbook_address_regex_idx > on mail_vessel_addressbook (cost=0.42..2912.06 rows=620 width=32) > (actual time=96.704..96.705 rows=1 loops=1) > Filter: ('foo@xxxxxxx'::text ~* address_regex) > Rows Removed by Filter: 14738 > Heap Fetches: 0 > Buffers: shared hit=71 > > *Linux* > > -> Index Only Scan using mail_vessel_addressbook_address_regex_idx > on mail_vessel_addressbook (cost=0.42..2913.04 rows=620 width=32) > (actual time=1768.724..1768.725 rows=1 loops=1) > Filter: ('foo@xxxxxxx'::text ~* address_regex) > Rows Removed by Filter: 97781 > Heap Fetches: 0 > Buffers: shared hit=530 > The file in FreeBSD came by pg_dump from the linux system, I am puzzled > why this huge difference in Buffers: shared hit. The "rows removed" value is also quite a bit different, so it's not just a matter of buffer touches --- there's evidently some real difference in how much of the index is being scanned. I speculate that you are using different collations on the two systems, and FreeBSD's collation happens to place the first matching row earlier in the index. regards, tom lane