Ребят, привет) Посоветовали обратиться сюда за помощью.
Помогите, пожалуйста, оптимизировать запрос.
Есть таблица с данными
id order_id mod_date
4 1000000000091298 2021-05-09 08:28:21.090
3 1000000000137327 2021-05-09 08:28:21.070
2 1000000000137327 2021-05-09 08:28:21.057
1 1000000000181967 2021-05-09 08:28:17.830
Нужно получить след. данные
id order_id mod_date
4 1000000000091298 2021-05-09 08:28:21.090
3 1000000000137327 2021-05-09 08:28:21.070
1 1000000000181967 2021-05-09 08:28:17.830
Т.е. надо получить
id,
order_id и
mod_date с максимальной датой изменения, до определённой даты, и не все сразу, а последовательно, т.к. данных там миллионы и желательно это распараллелить (я через python смогу это сделать).
Написал запрос, но он работает медленно (примерно 70 секунд на 1000 строк). Помогите, пожалуйста, оптимизировать запрос. БД MSSQL (какая версия точно не знаю)
Сам запрос
SELECT
DISTINCT order_id, mod_date, id
FROM
mytable as [data]
WHERE
mod_date < '2021-01-08 00:00:00'
AND
mod_date = (SELECT
MAX(mod_date)
FROM
mytable
WHERE
order_id = [data].order_id)
ORDER BY mod_date
OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY