El DISTINCT en tu COUNT: por qué Postgres abandona el paralelismo
The DISTINCT in Your COUNT

En PostgreSQL, count(DISTINCT ...) desactiva la ejecución paralela: la agregación se ejecuta en un solo núcleo, ordena todas las filas y puede volcar a disco, incluso en tablas grandes. El motivo es que el estado parcial de un DISTINCT no se puede combinar sin reunir todos los valores. Una reescritura con GROUP BY y un count(*) posterior restaura el paralelismo y puede ser ~3,4 veces más rápida. El artículo también cubre agregados con ORDER BY y el caso de conteos distintos por grupo.
Una agregación con DISTINCT (u ORDER BY interno) no puede ejecutarse en modo parcial; el planificador no puede colocar una Aggregate parcial bajo un Gather y, sin una agregación parcial que alimentar, un escaneo paralelo no aporta nada.