STATISTICS
テーブルは、テーブルインデックスの情報を提供します。
テーブル統計を表す STATISTICS
のカラムには、キャッシュされた値が保持されます。 information_schema_stats_expiry
システム変数は、キャッシュされたテーブルの統計が期限切れになるまでの期間を定義します。 デフォルトは 86400 秒 (24 時間) です。 キャッシュされた統計がない場合、または統計が期限切れになっている場合は、テーブル統計カラムのクエリー時にストレージエンジンから統計が取得されます。 特定のテーブルのキャッシュされた値をいつでも更新するには、ANALYZE TABLE
を使用します。 常に最新の統計をストレージエンジンから直接取得するには、information_schema_stats_expiry=0
を設定します。 詳細は、セクション8.2.3「INFORMATION_SCHEMA クエリーの最適化」を参照してください。
innodb_read_only
システム変数が有効になっている場合、InnoDB
を使用するデータディクショナリの統計テーブルを更新できないため、ANALYZE TABLE
が失敗することがあります。 キー分散を更新する ANALYZE TABLE
操作では、操作によってテーブル自体が更新された場合でも (MyISAM
テーブルの場合など)、障害が発生する可能性があります。 更新された分散統計を取得するには、information_schema_stats_expiry=0
を設定します。
STATISTICS
テーブルには、次のカラムがあります:
-
TABLE_CATALOG
インデックスを含むテーブルが属するカタログの名前。 この値は常に
def
です。 -
TABLE_SCHEMA
インデックスを含むテーブルが属するスキーマ (データベース) の名前。
-
TABLE_NAME
インデックスを含むテーブルの名前。
-
NON_UNIQUE
このインデックスが重複を含むことができない場合は 0、できる場合は 1。
-
INDEX_SCHEMA
インデックスが属するスキーマ (データベース) の名前。
-
INDEX_NAME
インデックスの名前。 このインデックスが主キーである場合、その名前は常に
PRIMARY
です。 -
SEQ_IN_INDEX
インデックス内のカラムシーケンス番号であり、1 から始まります。
-
COLUMN_NAME
カラム名。
EXPRESSION
カラムの説明も参照してください。 -
COLLATION
インデックス内でのカラムのソート方法。 これには、
A
(昇順)、D
(降順) またはNULL
(ソートなし) の値を指定できます。 -
CARDINALITY
このインデックス内の一意の値の数の推定値。 この数を更新するには、
ANALYZE TABLE
または (MyISAM
テーブルの場合は)myisamchk -a を実行します。CARDINALITY
は整数として格納された統計に基づいてカウントされるため、小さいテーブルの場合でも値が正確であるとはかぎりません。 カーディナリティーが高いほど、MySQL が結合を実行するときにこのインデックスを使用する可能性は高くなります。 -
SUB_PART
インデックス接頭辞。 つまり、カラムが部分的にのみインデックス付けされている場合はインデックス付けされた文字の数で、カラム全体がインデックス付けされている場合は
NULL
です。注記接頭辞 limits はバイト単位で測定されます。 ただし、
CREATE TABLE
、ALTER TABLE
およびCREATE INDEX
ステートメントのインデックス指定の接頭辞 lengths は、非バイナリ文字列型 (CHAR
,VARCHAR
,TEXT
) の場合は文字数として解釈され、バイナリ文字列型 (BINARY
,VARBINARY
,BLOB
) の場合はバイト数として解釈されます。 マルチバイト文字セットを使用する非バイナリ文字列カラムに接頭辞の長さを指定する場合は、これを考慮してください。インデックス接頭辞の詳細は、セクション8.3.5「カラムインデックス」 および セクション13.1.15「CREATE INDEX ステートメント」 を参照してください。
-
PACKED
キーがパックされる方法を示します。 パックされない場合は
NULL
。 -
NULLABLE
このカラムに
NULL
値を含めることができる場合はYES
が、できない場合は''
が含まれます。 -
INDEX_TYPE
使用されるインデックス方法 (
BTREE
、FULLTEXT
、HASH
、RTREE
)。 -
COMMENT
各カラムで説明されていないこのインデックスに関する情報 (このインデックスが無効になっている場合の
disabled
など)。 -
INDEX_COMMENT
このインデックスが作成されたときに
COMMENT
属性でインデックスに対して提供された任意のコメント。 -
IS_VISIBLE
オプティマイザがインデックスを参照できるかどうか。 セクション8.3.12「不可視のインデックス」を参照してください。
-
EXPRESSION
MySQL 8.0.13 以上では、
COLUMN_NAME
カラムとEXPRESSION
カラムの両方に影響する機能キー部分 (機能キー部品 を参照) がサポートされています:機能しないキー部分の場合、
COLUMN_NAME
はキー部分でインデックス付けされたカラムを示し、EXPRESSION
はNULL
です。関数キー部分の場合、
COLUMN_NAME
カラムはNULL
で、EXPRESSION
はキー部分の式を示します。
メモ
インデックス用の標準
INFORMATION_SCHEMA
テーブルはありません。 MySQL のカラムリストは、QUALIFIER
およびOWNER
がそれぞれCATALOG
およびSCHEMA
に置き換えられる点を除き、SQL Server 2000 がsp_statistics
に対して返すものと似ています。
テーブルインデックスに関する情報は、SHOW INDEX
ステートメントからも入手できます。 セクション13.7.7.22「SHOW INDEX ステートメント」を参照してください。 次のステートメントは同等です。
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'tbl_name'
AND table_schema = 'db_name'
SHOW INDEX
FROM tbl_name
FROM db_name