Были бы некоторые очевидные индексы, которые должны быть в таблице ниже Users
, которые оптимизировали бы для запроса ниже?
Я вижу потребность в индексах, но не уверен, как объединить индексы будет GROUP BY и ORDER BY включены.
Я вижу следующие столбцы:
- Status
- CreatedDate
- Region, LocationId
Ниже приведен запрос:
SELECT
u.UserId,
u.LocationId,
others.ArchiveCount
FROM Users u
OUTER APPLY (
SELECT TOP 1
CASE WHEN u2.Status = 'ARCHIVED' THEN
1
ELSE
0
END as ArchiveCount
FROM Users u2
WHERE u2.UserId = u.UserId
ORDER BY u2.CreatedDate desc
) others
GROUP BY u.RegionId, u.LocationId, others.ArchiveCount
ORDER BY u.RegionId, u.LocationId, others.ArchiveCount