Jawabannya ada di bagian rencana eksekusi ini:
Seq Scan ... (actual ... rows=2876756 ...)
...
Rows Removed by Filter: 141052
Karena hampir semua baris dikembalikan, menggunakan pemindaian berurutan dan membuang beberapa baris yang difilter adalah cara paling efisien untuk memproses kueri.
Jika Anda ingin memverifikasi itu, untuk sementara
SET enable_seqscan = off;
untuk membuat PostgreSQL menghindari pemindaian berurutan jika memungkinkan. Kemudian Anda dapat menguji apakah eksekusi kueri menjadi lebih cepat atau tidak.