対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
指定したテーブルまたはインデックス付きビュー上にあるすべてのインデックスおよび統計の一覧を返します。
構文
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 = ] 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 は 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 = 非クラスタ |
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)
次の例では、DimEmployee サンプル データベースからAdventureWorks テーブルに関する情報を返します。
EXECUTE sp_statistics DimEmployee;