Разделение таблиц, как и некоторые другие функции, довольно часто (или, возможно, даже чаще всего?) Используется не по назначению. Любой из предостережений я дал бы был хорошо изложен в @ swasheck в ответе .
Кроме того, альтернативой для рассмотрения является секционированные представления. Это способ хранить полностью отдельные таблицы, но связывать их вместе через UNION ALL в представлении. Каждая таблица требует CHECK CONSTRAINT, определяющей, какой диапазон данных содержит каждая таблица. Оптимизатор знает об этой конструкции и должен получать доступ только к базовым таблицам, которые требуются для запроса, используя представление (я не помню все требования, чтобы эта работа была запланирована, поэтому просмотрите ссылку CREATE VIEW внизу, но Я настроил его раньше, и было нетрудно заставить его работать как положено).
Определенно существуют некоторые ограничения, и основным недостатком является то, что он менее прозрачен по сравнению с разделением таблиц. Однако главное преимущество заключается в том, что это отдельные таблицы, и, следовательно, статистика является полностью отдельной, тогда как в случае Секционированной таблицы они предназначены для всей таблицы (даже если начиная с SQL Server 2014 вы можете обновить статистику по разделам).
Если вы не собираетесь использовать переключение между разделами, вам следует рассмотреть этот вариант. Особенно, если более старые данные не сильно меняются, поскольку таблицы, содержащие более старые данные, не нуждаются в обновлении своих индексов / статистики почти так же часто (или, возможно, когда-либо, если эти данные никогда не изменяются).
Другим недостатком секционирования таблиц, которое слишком часто остается незамеченным / незамеченным, является то, что начиная с SQL Server 2012, вы больше не получаете «бесплатную» ОБНОВЛЕНИЕ СТАТИСТИКИ С FULLSCAN при перестроении многораздельных индексов. Вы по-прежнему получаете эту статистику обновления с перестроением по неразделенным индексам, какими будут индексы в таблицах в секционированном представлении :).
Для получения дополнительной информации о разделенных представлениях, пожалуйста, проверьте страницу MSDN для CREATE VIEW и найдите раздел «Разделенные представления» в разделе «Замечания».