sql >> データベース >  >> RDS >> Sqlserver

特定の値がSQLServer(T-SQL)でマップされるパーティションを見つける

    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に注意してください 値が現在パーティション化されたテーブルまたはパーティション関数を使用するインデックスに存在するかどうかに関係なく、有効な値のパーティション番号を返します。


    1. SQL ServerCompactEditionでLIKEでパラメータを使用する方法

    2. CAST()を使用してSQLServerで日付形式を変換する方法

    3. 修正方法「関連付けられたパーティション関数は、スキームで言及されているファイルグループよりも多くのパーティションを生成します」SQLServerのメッセージ7707

    4. OracleデータベースでINTO句を使用して即時実行を使用する方法