Oszacowanie (cost=0.00..4164264.45 rows=5883377 width=3595)
pokazuje, że planista oczekuje, że ponad 5 mln rekordów spełni kryteria. To znacznie różni się od oczekiwanych 100 000, o których wspomniałeś.
W takich przypadkach `ANALYZE public.my_table;' zwykle pomaga. Odświeża statystyki danych tabeli.