sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL JOIN i PostgreSQL - annan exekveringsplan i WHERE-satsen än i ON-satsen

Tack för dina idéer, om vi lägger till ett index som

CREATE INDEX t3_t1_nr ON t3(t1_nr);

"BAD"-påståendet kommer att förbättras lite.

Men den slutliga lösningen för oss var att öka statistiken som samlades in för dessa tabeller:

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;

Efter denna ändring har båda SELECT:arna mer om samma exekveringstid. Mer information kan hittas här:https://www.postgresql.org/docs/12/planner-stats.html




  1. Kalendertabell i SQL

  2. Gå med i flera bord och behåll NULL

  3. Hur vet du när du behöver separata bord?

  4. MySQL:hämta ett stort urval i bitar