Можно ли разделить данные из одной таблицы на 2 или более таблиц и сделать так, чтобы SQL разделил их? Цель состоит в том, чтобы иметь исторические данные в mytable_old, а текущие данные - в mytable. Когда запросы выполняются, sql может получать данные от обоих / любого в зависимости от предикатов запроса.
Например, все данные старше 2011 года попадают в mytable_old, а данные 2011 года и новее остаются в mytable.
select * from mytable where date between 12/1/2010 and 12/1/2011
потянет с обоих столов. Это возможно?
Я бы предпочел не использовать представление, если это возможно. Я хочу, чтобы старые данные не индексировались.
Вы можете попробовать отфильтрованный индекс.
CREATE INDEX IX_SomeIndex ON SomeTable (
SomeColumn,
AnotherColumn
)
WHERE DateColumn >= '1/1/2011'
Тогда он будет индексировать только те материалы, которые новее указанной даты.
Чтобы сделать это таким образом, вам нужно настроить представление.
Было бы лучше использовать выпуск SQL Server Enterprise и просто разбить таблицу на разделы. Тогда у вас может быть два или более разделов, и будет запрашиваться только необходимый раздел или разделы.
Один из способов добиться этого - использовать VIEW
. Представление в этом случае будет в обеих таблицах, так что вы можете перемещать записи между ними любым способом.