Отговорът се крие в тази част от плана за изпълнение:
Seq Scan ... (actual ... rows=2876756 ...)
...
Rows Removed by Filter: 141052
Тъй като така или иначе почти всички редове се връщат, използването на последователно сканиране и отхвърлянето на няколкото реда, които са филтрирани, е най-ефективният начин за обработка на заявката.
Ако искате да потвърдите това, временно
SET enable_seqscan = off;
за да накарате PostgreSQL да избягва последователно сканиране, ако е възможно. След това можете да тествате дали изпълнението на заявката става по-бързо или не.