使用具有用户定义函数的分区模式

时间:2012-05-02 14:22:42

标签: sql-server partitioning user-defined-functions

我正在使用SQL Server 2008 R2。我正在尝试一些分区的东西,并有一些问题。

这是一个非常简单的例子:

CREATE PARTITION FUNCTION MyPartitionFunction (int)
AS RANGE LEFT FOR VALUES (1,2)

CREATE PARTITION SCHEME MyPartitionScheme AS
PARTITION MyPartitionFunction ALL TO ([PRIMARY])

CREATE FUNCTION CalcPartitionValue (@value int) RETURNS int
WITH SCHEMABINDING AS
BEGIN
   if @value % 2 = 0 return 1
   return 2
END

CREATE TABLE MyTable
(ID INT NOT NULL)
ON MyPartitionScheme (dbo.CalcPartitionValue(ID));

我想使用用户定义的函数作为分区函数的输入。有没有办法让这个工作?

我知道可以使用用户定义的函数创建计算列。但是,对具有超过3亿行的表的架构更新将不会那么快。这就是为什么我要问是否可以直接使用用户定义的函数。

1 个答案:

答案 0 :(得分:1)

尝试持久计算列并使用函数作为列公式。 在函数定义中使用“With Schemabinding”选项,它将全部正常工作。