我正在使用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亿行的表的架构更新将不会那么快。这就是为什么我要问是否可以直接使用用户定义的函数。
答案 0 :(得分:1)
尝试持久计算列并使用函数作为列公式。 在函数定义中使用“With Schemabinding”选项,它将全部正常工作。