MsSql допускает недетерминированные функции в функциях разделения:
CREATE PARTITION FUNCTION MyArchive(datetime)
AS RANGE LEFT FOR VALUES (GETDATE() – 10)
GO
Означает ли это, что записи старше 10 дней автоматически перемещаются в архивный (первый) раздел? Конечно нет.
База данных хранит дату, когда была создана схема разделения, и использует ее наиболее (логичным) способом.
Допустим, каждый устанавливает вышеупомянутую схему на 2000 -01-11, которая устанавливает дату разделения 2000-01-01.
Когда вы запрашиваете данные с датой ниже начальной даты разграничения (border_value - 2000-01-01), вы будете использовать только раздел архива.
Когда вы запрашиваете данные с датой выше, чем текущий день минус 10 дней (GETDATE () - 10), вы будете использовать только текущий раздел.
Во всех других запросах будут использоваться оба раздела, то есть для запроса данных с датой ниже текущей даты минус 10 дней, но выше даты разделения (2000-01-01).
Это означает, что с каждым днем диапазон дат, для которых используются оба раздела, увеличивается. И вам лучше было бы установить разделение на дату разграничения детерминистически.
Я не вижу ни одного сценария, в котором это полезно.