SQL Serverにパーティション化されたテーブルまたはインデックスがあり、特定の値がマップされるパーティションを決定する場合は、$PARTITION
を使用してこれをすばやくすばやく実行できます。 システム機能。
知っておく必要があるのは、パーティション関数の名前(そしてもちろん、関心のある値)だけです。
例
実例を示します。
SELECT $PARTITION.MoviesPartitionFunction(5);
結果:
+--------------------+ | (No column name) | |--------------------| | 2 | +--------------------+
この場合、値5
パーティション番号2に入ります。
他の値を試してみましょう。
SELECT
$PARTITION.MoviesPartitionFunction(-100) AS [-100],
$PARTITION.MoviesPartitionFunction(100) AS [100],
$PARTITION.MoviesPartitionFunction(1000) AS [1000],
$PARTITION.MoviesPartitionFunction(100000) AS [100000];
結果:
+--------+-------+--------+----------+ | -100 | 100 | 1000 | 100000 | |--------+-------+--------+----------| | 1 | 2 | 3 | 4 | +--------+-------+--------+----------+
クロスデータベースクエリ
別のデータベースにクエリを実行するために、データベース名のプレフィックスを付けることもできます。
SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);
データ型変換
指定する値のデータ型は、対応するパーティショニング列のデータ型と一致するか、暗黙的に変換可能である必要があります。
そうでない場合は、おそらくエラー245が発生します。
SELECT $PARTITION.MoviesPartitionFunction('Hey!');
結果:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Hey!' to data type int.
$PARTITION
に注意してください 値が現在パーティション化されたテーブルまたはパーティション関数を使用するインデックスに存在するかどうかに関係なく、有効な値のパーティション番号を返します。