Achilleas Mantzios - cloud <a.mantzios@cloud.gatewaynet.com> 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@bar.com'::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@bar.com'::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