sp_statistics (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
指定したテーブルまたはインデックス付きビュー上にあるすべてのインデックスおよび統計の一覧を返します。
構文
sp_statistics
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ , [ @index_name = ] N'index_name' ]
[ , [ @is_unique = ] 'is_unique' ]
[ , [ @accuracy = ] 'accuracy' ]
[ ; ]
Note
この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
引数
[ @table_name = ] N'table_name'
カタログ情報を返すために使用するテーブルを指定します。 @table_name は sysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。
[ @table_owner = ] N'table_owner'
カタログ情報を返すために使用されるテーブルのテーブル所有者の名前。 @table_owner は sysname で、既定値は NULL
です。 ワイルドカード パターン マッチングはサポートされていません。 owner
が指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル表示規則が適用されます。
SQL Server では、現在のユーザーが指定した名前のテーブルを所有している場合、そのテーブルのインデックスが返されます。 owner
が指定されておらず、現在のユーザーが指定したname
を持つテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定したname
を持つテーブルを検索します。 存在する場合は、そのテーブルのインデックスが返されます。
[ @table_qualifier = ] N'table_qualifier'
テーブル修飾子の名前。 @table_qualifier は sysname で、既定値は NULL
です。 さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>
) がサポートされています。 SQL Server では、このパラメーターはデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。
[ @index_name = ] N'index_name'
インデックス名。 @index_name は sysname で、既定値は %
です。 ワイルドカードのパターン マッチングがサポートされています。
[ @is_unique = ] 'is_unique'
一意のインデックス ( Y
の場合) のみを返すかどうか。 @is_unique は char(1)で、既定値は空の文字列です。
[ @accuracy = ] 'accuracy'
統計のカーディナリティとページ精度のレベル。 @accuracy は char(1) で、既定値は Q
です。 E
を指定して、カーディナリティとページが正確になるように統計が更新されるようにします。
E
(SQL_ENSURE
) は、無条件に統計を取得するようにドライバーに要求します。Q
(SQL_QUICK
) は、カーディナリティとページを取得するようにドライバーに要求します。これは、サーバーからすぐに使用できる場合に限られます。 この場合、ドライバーは値が最新であることを確認しません。 Open Group 標準に書き込まれたアプリケーションは、常に ODBC 3.x 準拠ドライバーからSQL_QUICK
動作を取得します。
結果セット
列名 | データ型 | 説明 |
---|---|---|
TABLE_QUALIFIER |
sysname | テーブルの修飾子名です。 この列は NULL できます。 |
TABLE_OWNER |
sysname | テーブル所有者の名前。 この列は常に値が返されます。 |
TABLE_NAME |
sysname | テーブル名。 この列は常に値が返されます。 |
NON_UNIQUE |
smallint | NULL 値は許可されません。0 = 一意1 = 一意ではありません |
INDEX_QUALIFIER |
sysname | インデックス所有者名。 一部の DBMS 製品では、テーブル所有者以外のユーザーがインデックスを作成できます。 SQL Server では、この列は常に TABLE_NAME と同じです。 |
INDEX_NAME |
sysname | インデックスの名前です。 この列は常に値が返されます。 |
TYPE |
smallint | この列は常に値を返します。0 = テーブルの統計1 = クラスター化2 = ハッシュ3 = Nonclustered |
SEQ_IN_INDEX |
smallint | インデックス内での列の位置。 |
COLUMN_NAME |
sysname | 返される TABLE_NAME の各列の列名。 この列は常に値が返されます。 |
COLLATION |
char(1) | 照合順序で使用されている並べ替え順。 次の値をとります。A = 昇順D = 降順NULL = 該当なし |
CARDINALITY |
int | テーブル内の行数、またはインデックス内の一意の値。 |
PAGES |
int | インデックスまたはテーブルを格納するページ数。 |
FILTER_CONDITION |
varchar(128) | SQL Server は値を返しません。 |
リターン コードの値
ありません。
解説
結果セット内のインデックスは、 NON_UNIQUE
、 TYPE
、 INDEX_NAME
、および SEQ_IN_INDEX
の列の昇順で表示されます。
クラスター化インデックス型は、テーブルのデータがインデックスの順に格納されているインデックス型を指します。 この値は、SQL Server クラスター化インデックスに対応します。
インデックスの種類 Hashed は完全一致または範囲検索を受け入れますが、パターン マッチング検索ではインデックスは使用されません。
sp_statistics
システム ストアド プロシージャは、ODBC でのSQLStatistics
と同じです。 返される結果は、 NON_UNIQUE
、 TYPE
、 INDEX_QUALIFIER
、 INDEX_NAME
、および SEQ_IN_INDEX
順に並べ替えます。 詳細については、 ODBC リファレンスを参照してください。
アクセス許可
スキーマに対する SELECT
アクセス許可が必要です。
例: Azure Synapse Analytics and Analytics Platform System (PDW)
次の例では、AdventureWorks
サンプル データベースからDimEmployee
テーブルに関する情報を返します。
EXEC sp_statistics DimEmployee;