La estimación (cost=0.00..4164264.45 rows=5883377 width=3595)
muestra que el planificador espera que más de 5 millones de registros coincidan con los criterios. Es significativamente diferente de los 100.000 esperados que mencionas.
En casos como este `ANALYZE public.my_table;' suele ayudar. Actualiza las estadísticas de los datos de la tabla.