Ik vond hier een goed antwoord:Voortgang van een updateverklaring bijhouden
De truc is om eerst een reeks te maken (noem het zoals je wilt):
CREATE SEQUENCE query_progress START 1;
Voeg vervolgens toe aan het WHERE-gedeelte van uw zoekopdracht:
AND NEXTVAL('query_progress')!=0
Nu kunt u de voortgang opvragen:
SELECT NEXTVAL('query_progress');
Vergeet ten slotte niet de reeks te verwijderen:
DROP SEQUENCE query_progress;
Houd er rekening mee dat hierdoor uw query waarschijnlijk nog langzamer wordt uitgevoerd en elke keer dat u de voortgang controleert, wordt de waarde extra verhoogd. De bovenstaande link stelde voor om een tijdelijke reeks te maken, maar PostgreSQL lijkt ze niet zichtbaar te maken voor verschillende sessies.