The EXPLAIN'Index Scan using idx_user_country on card (cost=0.57..1854.66 rows=460 width=922)'' Index Cond: (((user_id)::text = '4684'::text) AND (user_country = 'BR'::bpchar))'
Show 3 runs of the full explain analyze plan on given condition so that we can also see cold vs warm cache performance.
There is definitely something wrong as there is no way a query like that should take 500ms. Your instinct is correct there.