You very likely forgot to run ANALYZE on your laptop after copying the
data. Observe the different row count estimates in the 2 plans...
HTH,
Csaba.
> QUERY PLAN
>
---------------------------------------------------------------------------------------------------------------------------------------------------
> Index Scan using ticketing_codes_uq_value_group_id on ticketing_codes
> (cost=0.00..6.02 rows=1 width=4) (actual time=0.104..0.107 rows=1
^^^^^^
> loops=1)
> Index Cond: (((code_value)::text = 'C7ZP2U'::text) AND (code_group_id
> = 1000))
> Total runtime: 0.148 ms
> (3 rows)
>
>
> PLAN
>
----------------------------------------------------------------------------------------------------------------------------------------------
> Bitmap Heap Scan on ticketing_codes (cost=2.01..1102.05 rows=288
^^^^^^^^
> width=4) (actual time=88.164..88.170 rows=1 loops=1)
> Recheck Cond: (((code_value)::text = 'C7ZP2U'::text) AND
> (code_group_id = 1000))
> -> Bitmap Index Scan on ticketing_codes_uq_value_group_id
> (cost=0.00..2.01 rows=288 width=0) (actual time=54.397..54.397 rows=1
> loops=1)
> Index Cond: (((code_value)::text = 'C7ZP2U'::text) AND
> (code_group_id = 1000))
> Total runtime: 88.256 ms
> (5 rows)
>