Odpowiedź kryje się w tej części planu wykonania:
Seq Scan ... (actual ... rows=2876756 ...)
...
Rows Removed by Filter: 141052
Ponieważ prawie wszystkie wiersze i tak są zwracane, użycie sekwencyjnego skanowania i odrzucenie kilku odfiltrowanych wierszy jest najskuteczniejszym sposobem przetwarzania zapytania.
Jeśli chcesz to zweryfikować, tymczasowo
SET enable_seqscan = off;
aby PostgreSQL unikał skanowania sekwencyjnego, jeśli to możliwe. Następnie możesz sprawdzić, czy wykonywanie zapytania jest szybsze, czy nie.