sys.dm_db_stats_properties (Transact-SQL)sys.dm_db_stats_properties (Transact-SQL)

適用対象: はいSQL Server はいAzure SQL Database いいえAzure Synapse Analytics (SQL DW) いいえParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

現在のデータベース内の指定されたデータベースオブジェクト (テーブルまたはインデックス付きビュー) の統計のプロパティを返し SQL ServerSQL Server ます。Returns properties of statistics for the specified database object (table or indexed view) in the current SQL ServerSQL Server database. パーティションテーブルについては、同様のdm_db_incremental_stats_propertiesを参照してください。For partitioned tables, see the similar sys.dm_db_incremental_stats_properties.

構文Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

引数Arguments

object_idobject_id
統計のプロパティが要求された、現在のデータベース内にあるオブジェクトの ID です。Is the ID of the object in the current database for which properties of one of its statistics is requested. object_idintです。object_id is int.

stats_idstats_id
指定された object_idの統計情報の ID です。Is the ID of statistics for the specified object_id. 統計 ID は、 sys.stats 動的管理ビューから取得できます。The statistics ID can be obtained from the sys.stats dynamic management view. stats_idintです。stats_id is int.

返されるテーブルTable Returned

列名Column name データ型Data type 説明Description
object_idobject_id intint 統計オブジェクトのプロパティを返す対象のオブジェクト (テーブルまたはインデックス付きビュー) の ID。ID of the object (table or indexed view) for which to return the properties of the statistics object.
stats_idstats_id intint 統計オブジェクトの ID。ID of the statistics object. テーブルまたはインデックス付きビュー内で一意です。Is unique within the table or indexed view. 詳細については、「sys.stats (Transact-SQL)」を参照してください。For more information, see sys.stats (Transact-SQL).
last_updatedlast_updated datetime2datetime2 オブジェクトが最後に更新された日付と時刻。Date and time the statistics object was last updated. 詳細については、このページの「解説」セクションを参照してください。For more information, see the Remarks section in this page.
rowsrows bigintbigint 統計が最後に更新されたときのテーブルまたはインデックス付きビュー内の行の合計数。Total number of rows in the table or indexed view when statistics were last updated. 統計がフィルター選択されている場合、またはフィルター選択されたインデックスに対応している場合は、行数がテーブルの行数よりも少なくなることがあります。If the statistics are filtered or correspond to a filtered index, the number of rows might be less than the number of rows in the table.
rows_sampledrows_sampled bigintbigint 統計の計算時にサンプリングされた行の合計数。Total number of rows sampled for statistics calculations.
stepssteps intint ヒストグラムの区間の数。Number of steps in the histogram. 詳細については、「DBCC SHOW_STATISTICS (Transact-SQL)」を参照してください。For more information, see DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rowsunfiltered_rows bigintbigint フィルター式を適用する前のテーブル内の行の合計数 (フィルター選択された統計情報の場合)。Total number of rows in the table before applying the filter expression (for filtered statistics). 統計がフィルター選択されていない場合は unfiltered_rows は行の列に返される値と同じです。If statistics are not filtered, unfiltered_rows is equal to the value returns in the rows column.
modification_countermodification_counter bigintbigint 統計情報が前回更新されてから先頭の統計列 (構築するヒストグラムの基になる列) に対して行われた変更の総数。Total number of modifications for the leading statistics column (the column on which the histogram is built) since the last time statistics were updated.

メモリ最適化テーブル: SQL Server 2016 (13.x)SQL Server 2016 (13.x) この列の先頭と末尾には、 Azure SQL データベースAzure SQL Database 統計が最後に更新された後、またはデータベースが再起動されてからの、テーブルに対する変更の合計数が含まれます。Memory-optimized tables: starting SQL Server 2016 (13.x)SQL Server 2016 (13.x) and in Azure SQL データベースAzure SQL Database this column contains: total number of modifications for the table since the last time statistics were updated or the database was restarted.
persisted_sample_percentpersisted_sample_percent floatfloat サンプリングの割合を明示的に指定しない統計情報の更新に使用される永続化されたサンプルのパーセンテージです。Persisted sample percentage used for statistic updates that do not explicitly specify a sampling percentage. 値がゼロの場合、永続化されたサンプルのパーセンテージがこの統計に設定されていません。If value is zero, then no persisted sample percentage is set for this statistic.

適用対象: SQL Server 2016 (13.x)SQL Server 2016 (13.x)SP1 CU4Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 CU4

解説Remarks

dm_db_stats_propertiesは、次のいずれかの条件に該当する場合に空の行セットを返します。sys.dm_db_stats_properties returns an empty rowset under any of the following conditions:

  • object_idまたはstats_idが NULL です。object_id or stats_id is NULL.
  • 指定されたオブジェクトが見つからないか、テーブルまたはインデックス付きビューに対応していません。The specified object is not found or does not correspond to a table or indexed view.
  • 指定した統計 ID が、指定したオブジェクト ID の既存の統計情報に対応しない。The specified statistics ID does not correspond to existing statistics for the specified object ID.
  • 現在のユーザーに統計オブジェクトを表示する権限がない。The current user does not have permissions to view the statistics object.

この動作により、sys. objectssysなどのビューの行にクロス適用された場合に、 dm_db_stats_propertiesを安全に使用できるようになります。This behavior allows for the safe usage of sys.dm_db_stats_properties when cross applied to rows in views such as sys.objects and sys.stats.

統計の更新日付は、メタデータではなく統計 BLOB オブジェクトヒストグラムおよび密度ベクトルと共に格納されます。Statistics update date is stored in the statistics blob object together with the histogram and density vector, not in the metadata. 統計データを生成するためのデータが読み取られない場合、統計 blob は作成されず、日付は使用できず、 last_updated列は NULL になります。When no data is read to generate statistics data, the statistics blob is not created, the date is not available, and the last_updated column is NULL. これは、述語が行を返さないフィルター選択された統計情報や、新しい空のテーブルの場合です。This is the case for filtered statistics for which the predicate does not return any rows, or for new empty tables.

アクセス許可Permissions

では、ユーザーが統計列に対する select 権限を持っているか、ユーザーがテーブルを所有しているか、固定 sysadmin サーバーロール、 db_owner 固定データベースロール、または固定データベースロールのメンバーである必要があり db_ddladmin ます。Requires that the user has select permissions on statistics columns or the user owns the table or the user is a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

Examples

A.A. 簡単な例Simple example

次の例では、AdventureWorks データベース内のテーブルの統計を返し Person.Person ます。The following example returns the statistics for the Person.Person table in the AdventureWorks database.

SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);

B.B. テーブルのすべての統計プロパティを返すReturning all statistics properties for a table

次の例では、テーブルテストに存在するすべての統計のプロパティを返します。The following example returns properties of all statistics that exist for the table 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');  

C.C. 頻繁に変更されるオブジェクトの統計プロパティを返すReturning statistics properties for frequently modified objects

次の例では、統計が前回更新されてからの先頭列の変更が 1,000 回を超える、現在のデータベース内にあるすべてのテーブル、インデックス付きビュー、および統計を返します。The following example returns all tables, indexed views, and statistics in the current database for which the leading column was modified more than 1000 times since the last statistics update.

SELECT obj.name, obj.object_id, stat.name, stat.stats_id, last_updated, modification_counter  
FROM sys.objects AS obj   
INNER JOIN sys.stats AS 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;  

参照See Also

DBCC SHOW_STATISTICS (Transact-sql) DBCC SHOW_STATISTICS (Transact-SQL)
SQLSERVER (Transact-sql) sys.stats (Transact-SQL)
オブジェクト関連の動的管理ビューおよび関数 (Transact-sql) Object Related Dynamic Management Views and Functions (Transact-SQL)
動的管理ビューおよび関数 (Transact-SQL)Dynamic Management Views and Functions (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)sys.dm_db_stats_histogram (Transact-SQL)