postgres ||агрегация занимает время - PullRequest
0 голосов
/ 11 мая 2018

ниже запроса занимает 5-6 секунд для выполнения. Есть ли способ, которым это может быть улучшено? В таблице около 1,9 миллиона записей, а квалификационные записи составляют 0,9 миллиона

Запрос:

Select startdate,  perosntypecode,  verificationstatuscode, activitynumber, enddate, activityname,  COUNT(*)
from personmoderation
where  startdatetimegmt >= '2018-06-12T10:00:56'
and embarkdate between (SELECT p.startdate FROM personmoderation AS p 
                     WHERE p.startdatetimegmt >= '2018-06-12T10:00:56' 
                     ORDER BY p.startdatetimegmt ASC LIMIT 1
                   ) 
                and (SELECT p.startdate FROM personmoderation AS p
                     WHERE p.startdatetimegmt >= '2018-06-12T10:00:56' 
                     ORDER BY p.startdatetimegmt ASC LIMIT 1
                   ) + interval '100 days' 
group by startdate,  perosntypecode,  verificationstatuscode, activitynumber, enddate, activityname

Индекс:

create
    index ix1 on
    personmoderation
        using btree(
        startdatetimegmt,
        startdate,
        persontypecode,
        verificationstatuscode,
        activitynumber,
        enddate,
        activityname
);

Примечание. Подзапрос, используемый в предложении where, занимает 3-4 миллисекунды.

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