Die Antwort liegt in diesem Teil des Ausführungsplans:
Seq Scan ... (actual ... rows=2876756 ...)
...
Rows Removed by Filter: 141052
Da sowieso fast alle Zeilen zurückgegeben werden, ist die Verwendung eines sequentiellen Scans und das Verwerfen der wenigen herausgefilterten Zeilen die effizienteste Methode zur Verarbeitung der Abfrage.
Wenn Sie das überprüfen möchten, vorübergehend
SET enable_seqscan = off;
damit PostgreSQL einen sequentiellen Scan möglichst vermeidet. Dann können Sie testen, ob die Abfrageausführung schneller wird oder nicht.