Dziękujemy za pomysły, jeśli dodamy indeks taki jak
CREATE INDEX t3_t1_nr ON t3(t1_nr);
Oświadczenie „BAD” trochę się poprawi.
Ale ostatecznym rozwiązaniem dla nas było zwiększenie statystyk zebranych dla tych tabel:
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;
Po tej zmianie obie SELECT mają więcej informacji o tym samym czasie wykonania. Więcej informacji można znaleźć tutaj:https://www.postgresql.org/docs/12/planner-stats.html