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

Пазете PostgreSQL понякога да избира лош план за заявка

Ако плановникът на заявки взема лоши решения, това е най-вече едно от двете неща:

1. Статистиката са неточни.

Изпълнявате ли ANALYZE достатъчно? Също така популярен в своята комбинирана форма VACUUM ANALYZE . Ако автоматичното вакуумиране е включено (което е по подразбиране в съвременния Postgres), ANALYZE се стартира автоматично. Но помислете за:

  • Редовният ВАКУУМЕН АНАЛИЗ все още ли се препоръчва съгласно 9.1?

Ако масата ви е голяма и разпределението на данните е неправилно , повишаване на default_statistics_target може да помогне. Или по-скоро просто задайте целта на статистиката за съответните колони (тези в WHERE или JOIN клаузи на вашите заявки, основно):

ALTER TABLE ... ALTER COLUMN ... SET STATISTICS 400;  -- calibrate number

Целта може да бъде зададена в диапазона от 0 до 10000;

Изпълнете ANALYZE отново след това (на съответните таблици).

2. Настройките на разходите за плановик прогнозите са изключени.

Прочетете главата Разходни константи на Planner в ръководството.

Вижте главите default_statistics_target и random_page_cost на тази като цяло полезна страница на PostgreSQL Wiki.

Има много други възможни причини, но това са най-често срещаните.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как POSITION() работи в PostgreSQL

  2. PostgreSQL таблична променлива

  3. Изтрийте дублиращи се редове от малка таблица

  4. Как да конфигурирате репликация от клъстер към клъстер за PostgreSQL

  5. Грешка при свързване към postgresql с помощта на sqlalchemy