Ho trovato una buona risposta qui:Tracciamento dello stato di avanzamento di una dichiarazione di aggiornamento
Il trucco è creare prima una sequenza (denominarla come preferisci):
CREATE SEQUENCE query_progress START 1;
Quindi aggiungi alla parte WHERE della tua query:
AND NEXTVAL('query_progress')!=0
Ora puoi interrogare lo stato di avanzamento:
SELECT NEXTVAL('query_progress');
Infine, non dimenticare di eliminare la sequenza:
DROP SEQUENCE query_progress;
Nota che molto probabilmente questo renderà la tua query ancora più lenta e ogni volta che controlli l'avanzamento aumenterà ulteriormente il valore. Il collegamento sopra ha suggerito di creare una sequenza temporanea ma PostgreSQL non sembra renderle visibili tra le sessioni.