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

Persisted 計算列を試し、関数を列式として使用します。関数定義で「With Schemabinding」オプションを使用すると、すべて正常に機能します。

于 2012-07-24T08:25:49.053 に答える