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

Бавно работеща заявка на Postgres

Причината за бавността са лошите оценки на броя на редовете, които карат PostgreSQL да избере вложено присъединяване към цикъл. Почти цялото ви време прекарвате в сканиране на индекса на hfj_res_link , което се повтаря 1113 пъти.

Първият ми опит ще бъде да ANALYZE hfj_spidx_date и вижте дали това помага. Ако да, уверете се, че автоматичният анализ обработва тази таблица по-често.

Следващият опит ще бъде да

SET default_statistics_target = 1000;

и след това ANALYZE както по-горе. Ако това помага, използвайте ALTER TABLE за увеличаване на STATISTICS на hash_identity и sp_value_high колони.

Ако и това не помогне и имате скорошна версия на PostgreSQL, можете да опитате разширена статистика :

CREATE STATISTICS myparamsda2_stats (dependencies)
   ON hash_identity, sp_value_high FROM hfj_spidx_date;

След това ANALYZE таблицата отново и вижте дали това помага.

Ако всичко това не помогне и не можете да направите правилните оценки, трябва да опитате с различен ъгъл:

CREATE INDEX ON hfj_res_link (target_resource_id, src_resource_id);

Това би трябвало значително да ускори сканирането на индекса и да ви осигури добро време за реакция.

И накрая, ако нито едно от горните няма ефект, можете да използвате грубата мярка за забрана на свързване на вложен цикъл за тази заявка:

BEGIN;
SET LOCAL enable_nestloop = off;
SELECT /* your query goes here */;
COMMIT;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да обединя 3 таблици и да изчисля правилната сума на полета от 2 таблици, без дублиращи се редове?

  2. Как да инсталирате PostgreSQL клиентска библиотека за PHP на Windows с активиран SSL

  3. достъп до псевдоними на колони в клаузата where в postgresql

  4. Извикването на съхранена функция или процедура няма да вмъкне и да запази промените

  5. Как да надстроя PostgreSQL от версия 9.6 до версия 10.1 без загуба на данни?