PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL JOIN in PostgreSQL - Unterschiedlicher Ausführungsplan in der WHERE-Klausel als in der ON-Klausel

Vielen Dank für Ihre Ideen, wenn wir einen Index wie

hinzufügen
CREATE INDEX t3_t1_nr ON t3(t1_nr);

das "BAD"-Statement wird sich etwas verbessern.

Aber die endgültige Lösung für uns bestand darin, die für diese Tabellen gesammelten Statistiken zu erhöhen:

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;

Nach dieser Änderung haben beide SELECTs ungefähr dieselbe Ausführungszeit. Weitere Informationen finden Sie hier:https://www.postgresql.org/docs/12/planner-stats.html