0

我正在使用 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 亿行的表进行模式更新不会那么快。这就是为什么我要问是否可以直接使用用户定义的函数。

4

1 回答 1

1

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

于 2012-07-24T08:25:49.053 回答