Grazie per le tue idee, se aggiungiamo un indice come
CREATE INDEX t3_t1_nr ON t3(t1_nr);
la dichiarazione "BAD" migliorerà un po'.
Ma la soluzione finale per noi è stata aumentare le statistiche raccolte per queste tabelle:
ALTER TABLE t1 ALTER COLUMN t1_nr SET STATISTICS 10000;
ALTER TABLE t2 ALTER COLUMN t2_nr SET STATISTICS 10000;
ALTER TABLE t3 ALTER COLUMN t1_nr SET STATISTICS 10000;
ANALYZE t1;
ANALYZE t2;
ANALYZE t3;
Dopo questa modifica, entrambi i SELECT hanno più informazioni sullo stesso tempo di esecuzione. Maggiori informazioni sono disponibili qui:https://www.postgresql.org/docs/12/planner-stats.html