Назад | Перейти на главную страницу

разделить две таблицы

Можно ли разделить данные из одной таблицы на 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. Представление в этом случае будет в обеих таблицах, так что вы можете перемещать записи между ними любым способом.