Encontré una buena respuesta aquí:Seguimiento del progreso de una declaración de actualización
El truco es crear primero una secuencia (nómbrala como quieras):
CREATE SEQUENCE query_progress START 1;
Luego agregue a la parte WHERE de su consulta:
AND NEXTVAL('query_progress')!=0
Ahora puedes consultar el progreso:
SELECT NEXTVAL('query_progress');
Finalmente, no olvide deshacerse de la secuencia:
DROP SEQUENCE query_progress;
Tenga en cuenta que esto probablemente hará que su consulta se ejecute aún más lentamente y cada vez que verifique el progreso, aumentará adicionalmente el valor. El enlace anterior sugería crear una secuencia temporal, pero PostgreSQL no parece hacerlas visibles entre sesiones.