у меня на mssql архивация настроена по квартально, раз в квартал данные уходят в архив, вообще в другую БД на этой же машине, в текущей БД заносятся данные, что такой-то период перешел в архив, ну и часть отчетов, которые данные дергают, смотрят в эту таблицу, если промежуток архивный, то данные берут из архивной БД, если нет, то из текущей, ну и индексы решают