ниже запроса занимает 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 миллисекунды.