PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQL JOIN w PostgreSQL - inny plan wykonania w klauzuli WHERE niż w klauzuli ON

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przekaż argumenty wiersza poleceń do sql (Postgres)

  2. Alias ​​funkcji dla domyślnej funkcji Postgresa

  3. PostgresSql:Porównywanie dwóch tabel i uzyskanie wyniku oraz porównanie z trzecią tabelą

  4. Jak wskazać, że kolumna nie dopuszcza wartości null podczas tworzenia widoku zmaterializowanego?

  5. Jak wykorzystać nowe funkcje partycjonowania w PostgreSQL 11?