Агрегатная функция занимает слишком много времени для выполнения в postgreSQL - PullRequest
0 голосов
/ 29 января 2020

Я недавно развернул базу данных PostgreSQL на сервере Linux.
Одна из хранимых процедур занимает от 20 до 24 секунд. Я выполнил ту же хранимую процедуру в пустой базе данных (без возврата строки) и это занимает то же время. Я обнаружил, что медлительность происходит из-за агрегатной функции.
Здесь, если я удалил функцию ARRAY_TO_JSON(ARRAY_AGG(, результат будет получен в течение секунды.

Ниже приведен мой фрагмент кода:

 SELECT ARRAY_TO_JSON(ARRAY_AGG(ROW_TO_JSON(A))) FROM (
 select billservice.billheaderid,billservice.billserviceid AS billserviceid,.....(around 120 columns in select ).....
 )A;


Объяснить план выполнения:

enter image description here

Ранее я был развернут PostgreSQL база данных на windows сервере и тот же хранится Процедура занимает около 1 до 1,5 секунды. В обоих случаях я тестировал одну и ту же базу данных с одинаковым количеством данных. а также оба сервера имеют одинаковую конфигурацию, как ОЗУ, процессор. И также имеют такую ​​же PostgreSQL конфигурацию. При выполнении моей хранимой процедуры в Linux загрузка ЦП сервера достигает 100%.
Дайте мне знать, если у вас есть какое-либо решение для того же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...