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

Postgres оптимизация на заявки (принудително сканиране на индекс)

За тестване За целите можете да принудите използването на индекса чрез "деактивиране" на последователни сканирания - най-добре само в текущата ви сесия:

SET enable_seqscan = OFF;

Правне използвайте това на продуктивен сървър. Подробности в ръководството тук.

Цитирах "деактивиране", защото всъщност не можете да деактивирате последователното сканиране на таблици. Но всяка друга налична опция вече е за предпочитане за Postgres. Това ще докаже, че многоколонният индекс на (metric_id, t) може да се използва - просто не е толкова ефективен, колкото индекс на водещата колона.

Вероятно ще получите по-добри резултати, като промените реда на колоните във вашия PRIMARY KEY (и индексът, използван за прилагането му зад завесите с него) до (t, metric_id) . Или създайте допълнителен индекс с обърнати колони като този.

  • Съставният индекс добър ли е и за заявки в първото поле?

Обикновено не е нужно да налагате по-добри планове за заявки чрез ръчна намеса. Ако зададете enable_seqscan = OFF води до много по-добър план, вероятно нещо не е наред във вашата база данни. Помислете за този свързан отговор:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Искам да възстановя базата данни с различна схема

  2. Вземете номера на седмицата от дата в PostgreSQL

  3. Увеличете стойност в Postgres

  4. Прага PostgreSQL среща

  5. CS50:LIKE оператор, заместване на променлива с % разширение