Если вам по-прежнему нужно запрашивать данные, я бы не переместил их в другую таблицу.Насколько большой стол сейчас?Каковы показатели?Рассматривали ли вы разделение стола?
Если вам необходимо перейти к другой таблице, вы можете запросить хранимые процедуры с помощью оператора if.Сначала запросите основную таблицу, а затем, если rowcount = 0, запросите другую таблицу.Это будет медленнее для записей не в основной таблице, но должно оставаться быстрым, если они там находятся.Тем не менее, он не будет знать, когда вам нужны записи из обоих.
Пример кода для этого:
CREATE PROC myproc (@test INT)
AS
SELECT field1, field2 from table1field1, field2 from table1
IF @@rowcount = 0
BEGIN
SELECT field1, field2 FROM table2 field1, field2 from table1
END
Но на самом деле правильное разбиение и индексация, вероятно, ваш лучший выбор.Также оптимизируйте существующие запросы.Если вы используете известные неэффективные методы, такие как курсоры, коррелированные подзапросы, представления, которые вызывают представления, скалярные функции, несогласованные выражения where и т. Д., Просто исправление запросов может означать, что вам не нужно архивировать.
Иногда покупка лучшего сервера также может помочь.