В моей базе данных есть несколько очень больших таблиц, но значительная часть этих данных «старая».
Из-за обстоятельств, не зависящих от меня, я не могу удалить эти «старые» данные. Другое ограничение заключается в том, что я не могу изменить базу данных, то есть добавить в нее файловые группы. Как сейчас обстоят дела, все находится в PRIMARY
файловой группе.
Я думал разбить эти таблицы на несколько разделов, таких как «новый», «старый», «заархивированный» и тому подобное. У меня есть столбец «статус», который я хотел бы использовать для этой цели.
Учитывая описанный сценарий и ограничения, мне было интересно, имеет ли смысл разделение здесь. Другими словами, если моя таблица разделена таким образом, но все разделы находятся в одной файловой группе, SQL Server будет достаточно умен, чтобы найти эту специальную область в базовом файле, где находятся мои «новые» данные, и не коснуться область со "старыми" данными?
Иными словами, если, скажем, 80% моих данных «старые». Есть ли в SQL Server механизм, позволяющий избежать доступа к 100% базовых файлов и доступа только к 20%, которые содержат «новые» данные (при условии, конечно, что в WHERE
разделе запросов я указываю свой столбец разбиения ).
Я думаю, чтобы ответить на это, нужно было бы понять, как разделение реализовано внутри. Я ценю любые указатели.