sys.dm_db_stats_properties (Transact-SQL)

現在の SQL Server データベース内にある指定されたデータベース オブジェクト (テーブルまたはインデックス付きビュー) について、統計のプロパティを返します。

注意

動的管理オブジェクト sys.dm_db_stats_properties は、SQL Server 2012 Service Pack 1 以降および SQL Server 2008 R2 Service Pack 2 以降で使用できます。

構文

sys.dm_db_stats_properties (object_id, stats_id)

引数

  • object_id
    統計のプロパティが要求された、現在のデータベース内にあるオブジェクトの ID です。 object_id のデータ型は int です。

  • stats_id
    指定した object_id の統計の ID を指定します。 統計 ID は、sys.stats 動的管理ビューから取得できます。 stats_id のデータ型は int です。

返されるテーブル

列名

データ型

説明

object_id

int

統計オブジェクトのプロパティを返す対象であるオブジェクト (テーブルまたはインデックス付きビュー) の ID。

stats_id

int

統計オブジェクトの ID。 テーブルまたはインデックス付きビューで一意です。 詳細については、「sys.stats (Transact-SQL)」を参照してください。

last_updated

datetime2

オブジェクトが最後に更新された日付と時刻。

rows

bigint

統計情報が最後に更新された時点のテーブルまたはインデックス付きビューの行の総数。 統計がフィルター選択されている場合、またはフィルター選択されたインデックスに対応している場合は、行数がテーブルの行数よりも少なくなることがあります。

rows_sampled

bigint

統計の計算時にサンプリングされた行の合計数。

steps

int

ヒストグラムの区間の数。 詳細については、「DBCC SHOW_STATISTICS (Transact-SQL)」を参照してください。

unfiltered_rows

bigint

フィルター式を適用する前のテーブル内の行の合計数 (フィルター選択された統計情報の場合)。 統計情報がフィルター選択されていない場合、unfiltered_rows は、rows 列に返される値に等しくなります。

modification_counter

bigint

統計情報が前回更新されてから先頭の統計列 (構築するヒストグラムの基になる列) に対して行われた変更の総数。

説明

次のいずれかの条件に該当した場合、sys.dm_db_stats_properties は空の行セットを返します。

  • object_id または stats_id が NULL。

  • 指定したオブジェクトが見つからないか、テーブルまたはインデックス付きビューに対応しない。

  • 指定した統計 ID が、指定したオブジェクト ID の既存の統計情報に対応しない。

  • 現在のユーザーに統計オブジェクトを表示する権限がない。

この動作によって、sys.objectssys.stats などのビュー内の行へのクロス適用時に、sys.dm_db_stats_properties を安全に使用できます。

権限

ユーザーは、統計情報列に対する SELECT 権限を持っているか、テーブルを所有しているか、固定サーバー ロール sysadmin、固定データベース ロール db_owner、または固定データベース ロール db_ddladmin のメンバーである必要があります。

使用例

A. テーブルのすべての統計プロパティを返す

次の例では、テーブル TEST に関して存在するすべての統計のプロパティを返します。

SELECT
    sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter 
FROM sys.stats AS stat 
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = object_id('TEST');

B. 頻繁に変更されるオブジェクトの統計プロパティを返す

次の例では、統計が前回更新されてからの先頭列の変更が 1,000 回を超える、現在のデータベース内にあるすべてのテーブル、インデックス付きビュー、および統計を返します。

SELECT 
    obj.name, obj.object_id, stat.name, stat.stats_id, last_updated, modification_counter
FROM sys.objects AS obj 
JOIN sys.stats stat ON stat.object_id = obj.object_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE modification_counter > 1000;

関連項目

参照

DBCC SHOW_STATISTICS (Transact-SQL)

sys.stats (Transact-SQL)

オブジェクト関連の動的管理ビューおよび関数 (Transact-SQL)

動的管理ビューおよび関数 (Transact-SQL)