0

SQL 分区函数中如何使用非确定性函数?它们是否有用?

4

1 回答 1

3

MsSql 允许在分区函数中使用非确定性函数:

CREATE PARTITION FUNCTION MyArchive(datetime)
AS RANGE LEFT FOR VALUES (GETDATE() – 10)
GO

这是否意味着早于 10 天的记录会自动移至存档(第一个)分区?当然不是。

数据库存储分区模式的设置日期,并以最(逻辑)方式使用它。假设一个在 2000 -01-11 上设置上述模式,这使得定界日期为 2000-01-01。当您查询日期低于初始定界日期 (boundary_value - 2000-01-01) 的数据时,您将仅使用存档分区。当您查询日期高于当前日期减去 10 天 (GETDATE() – 10) 的数据时,您将仅使用当前分区。所有其他查询将使用两个分区,即查询日期低于当前日期减去 10 天但高于定界日期 (2000-01-01) 的数据。

这意味着随着时间的推移,使用这两个分区的日期范围越来越大。而且您最好确定性地将分区设置为定界日期。

我不认为这是有用的任何场景。

于 2008-10-10T23:21:01.883 回答