PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQL JOIN в PostgreSQL - различен план за изпълнение в клаузата WHERE отколкото в клаузата ON

Благодаря за вашите идеи, ако добавим индекс като

CREATE INDEX t3_t1_nr ON t3(t1_nr);

изявлението „ЛОШО“ ще се подобри малко.

Но окончателното решение за нас беше да увеличим статистическите данни, събрани за тези таблици:

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;

След тази промяна и двата SELECT имат повече за едно и също време на изпълнение. Повече информация можете да намерите тук: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. Atomikos:данните не се записват при използване на PostgreSQL

  2. pgsql връща таблица ГРЕШКА:препратката към колона е двусмислена

  3. Задействане с име на динамично поле

  4. postgresql - замества всички екземпляри на низ в текстовото поле

  5. Postgres:командата vacuum не почиства мъртвите кортежи