2012-05-02 11 views
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億以上の行を持つ表のスキーマ更新はそれほど速くはありません。それはなぜ私はそれが直接ユーザー定義関数を使用することが可能かどうか尋ねている。

答えて

1

try計算された列を永続化し、関数を列の数式として使用します。 関数定義で "With Schemabinding"オプションを使用すると、すべて正常に動作します。

関連する問題