Джейк,
Я думаю, что вам, возможно, понадобится другой POV для этой проблемы.
Сгруппированный выбор из **Index, Min(Date), Max(Date)**
не изменится радикально в течение дня по сравнению с диапазоном данных, охватываемых им (предположительно, за многие годы)
Таким образом, одним из вариантов будет создание сводной таблицы на основе данных в основной таблице ... например,
SELECT
Index,
Min(Date) as MinDate,
Max(Date) as MaxDate
INTO
MySummaryTable
FROM
MyOriginalTable
GROUP BY
Index
Эта таблица может быть удалена и воссоздана на полурегулярной (ежедневной) основе с помощью задания sql.
Точно так же я бы прикрепил индекс к столбцу id.
Тогда, когда вам нужно запустить ваш ежедневный запрос,
SELECT
summary.Index,
summary.MinDate,
summary.MaxDate
FROM
MyOriginalTable mot
INNER JOIN MySummaryTable summary
ON mot.Index = summary.Index --THIS IS WHERE YOUR CLUSTERED INDEX WILL PAY OFF
WHERE
mot.Date BETWEEN '2000-01-01' AND '2000-12-31' --THIS IS WHERE A SECOND NC INDEX WILL PAY OFF