Никогда не разделяет или не разделяет текущие / архивированные данные. Это просто неверно. Его можно назвать «хранилищем данных» или «корзиной с рыбой», но это неправильно, излишне, и создает проблем, которых не было в противном случае. Результат:
- каждый, кто запрашивает данные, должен искать их в двух местах, а не в одном
- и хуже, добавьте агрегированные значения вручную (в Excel или что-то еще)
- вы вводите аномалии в ключе, целостность теряется (что в противном случае было бы уникальным из-за одного ограничения в БД)
- когда необходимо изменить Завершенный заказ (или многие), вы должны выловить его из «склада» и положить обратно в «базу данных»
Если и только если ответ в таблице является медленным, то устраните это и увеличьте скорость. Только. Ничего больше. Это (во всех случаях, которые я видел) является ошибкой индексации (отсутствующий индекс или неправильные столбцы или неправильная последовательность столбцов - все ошибки). Как правило, все, что вам нужно, - это столбец IsComplete в индексе, а также все, что пользователи используют для поиска чаще всего, для включения / исключения открытых / завершенных заказов.
Теперь, если ваша платформа dbms не может обрабатывать большие таблицы или большие наборы результатов, это другая проблема, и вам нужно использовать любые методы, доступные в инструменте. Но как проблема проектирования базы данных, это просто неправильно; нет необходимости создавать дубликат, заполнять его и поддерживать его (со всеми вытекающими проблемами), кроме случаев, когда вы ограничены вашей платформой.
Как в прошлом году, так и в этом, как часть обычного задания производительности, я объединил такие разделенные таблицы с миллиардами строк (и мне пришлось решать все проблемы с дублирующимися строками, которые якобы «не существовали», да, верно, 2 дня только за это). Сводные таблицы с исправленными индексами были быстрее, чем разделенные таблицы; оправдание, что «миллиарды строк замедлили работу таблицы» было полностью ложным. Пользователи любят меня, потому что им больше не нужно использовать два инструмента и запрашивать две «базы данных», чтобы получить то, что им нужно.