Я не уверен насчет MS SQL Server, но большинство баз данных, похоже, имеют возможность разбивать таблицы. То есть создайте виртуальную таблицу из множества небольших таблиц и разделите данные между ними на основе некоторых простых правил.
Это очень хорошо для данных, основанных на времени, как это. Разделите таблицу на период времени, например, день или час. Затем один раз за промежуток времени добавьте новый раздел таблицы и удалите самый старый раздел таблицы. Гораздо эффективнее, чем выполнять УДАЛИТЬ ГДЕ время <сейчас - '1 час' или что-то еще. </p>
Или вместо того, чтобы бросить самый старый, заархивируйте его или просто оставьте его, занимая место. Поскольку в ваших запросах всегда указывается диапазон дат, запросы могут использовать только наиболее подходящие вложенные таблицы.