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

SQL Server(T-SQL)の各パーティションの行数を返す3つの方法

    以前にSQLServerでパーティションテーブルを作成し、各パーティションに格納されている行数を知りたい場合は、次の3つのクエリを使用できます。

    特に、次のことができます。

    • sys.dm_db_partition_statsをクエリします 表示
    • sys.partitionsにクエリを実行します 表示
    • $PARTITIONを使用します クエリで機能する

    以下は3つすべての例です。

    sys.dm_db_partition_stats

    sys.dm_db_partition_stats システム動的管理ビューは、現在のデータベース内のすべてのパーティションのページ数と行数の情報を返します。

    Moviesというパーティションテーブルの行数を返す例を次に示します。 。

    SELECT
        partition_number,
        row_count
    FROM sys.dm_db_partition_stats
    WHERE object_id = OBJECT_ID('Movies');

    結果:

    +--------------------+-------------+
    | partition_number   | row_count   |
    |--------------------+-------------|
    | 1                  | 0           |
    | 2                  | 100         |
    | 3                  | 3979        |
    | 4                  | 0           |
    +--------------------+-------------+

    この場合、最初と最後のパーティションは空です(Microsoftが推奨)。

    sys.partitions

    sys.partitions システムカタログビューには、データベース内のすべてのテーブルとほとんどのタイプのインデックスの各パーティションの行が含まれています。

    これを使用して、前の例と同じデータを返す方法は次のとおりです。

    SELECT
        partition_number,
        rows
    FROM sys.partitions
    WHERE object_id = OBJECT_ID('Movies');

    結果:

    +--------------------+--------+
    | partition_number   | rows   |
    |--------------------+--------|
    | 1                  | 0      |
    | 2                  | 100    |
    | 3                  | 3979   |
    | 4                  | 0      |
    +--------------------+--------+

    これは前のクエリとほとんど同じであることに気付くかもしれません。唯一の違いは、これはrowsという列を使用することです。 、前のものはrow_countという列を使用していました 。

    $PARTITIONS

    $PARTITIONS system関数は、指定されたパーティション関数のパーティション列値のセットがマップされるパーティション番号を返します。

    したがって、この情報を使用して、行数データを返すクエリを作成できます。

    SELECT 
        $PARTITION.MoviesPartitionFunction(MovieId) AS [Partition Number],   
        COUNT(*) AS [Number of Rows] 
    FROM Movies   
    GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)
    ORDER BY [Partition Number] ASC

    結果:

    +--------------------+------------------+
    | Partition Number   | Number of Rows   |
    |--------------------+------------------|
    | 2                  | 100              |
    | 3                  | 3979             |
    +--------------------+------------------+

    この例の結果との唯一の違いは、空でない行の数のみを返すことです。


    1. node.jsを使用してmySQLに一括挿入するにはどうすればよいですか?

    2. MySQLTunerを使用してMySQLのパフォーマンスを最適化する方法

    3. SQL Serverで先頭の空白を削除する方法– LTRIM()

    4. MySQL-LIKEを使用して完全一致の単語を検索する方法は?