STATISTICS 表提供有关表索引的信息。
STATISTICS 中表示表统计信息的列保存缓存的值。information_schema_stats_expiry 系统变量定义缓存的表统计信息过期前的时间段。默认值为 86400 秒(24 小时)。如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时,将从存储引擎检索统计信息。要随时更新给定表的缓存值,请使用 ANALYZE TABLE。要始终直接从存储引擎检索最新的统计信息,请设置 information_schema_stats_expiry=0。有关更多信息,请参阅 第 10.2.3 节“优化 INFORMATION_SCHEMA 查询”。
如果启用了 innodb_read_only 系统变量,则 ANALYZE TABLE 可能失败,因为它无法更新数据字典中使用 InnoDB 的统计信息表。对于更新键分布的 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。注意前缀限制以字节为单位。但是,
CREATE TABLE、ALTER TABLE和CREATE INDEX语句中索引规范的前缀长度对于非二进制字符串类型(CHAR、VARCHAR、TEXT)解释为字符数,对于二进制字符串类型(BINARY、VARBINARY、BLOB)解释为字节数。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。有关索引前缀的更多信息,请参阅 第 10.3.5 节“列索引” 和 第 15.1.15 节“CREATE INDEX 语句”。
PACKED表示键的打包方式。 如果未打包,则为
NULL。NULLABLE如果列可以包含
NULL值,则包含YES,如果不包含,则为''。INDEX_TYPE使用的索引方法(
BTREE、FULLTEXT、HASH、RTREE)。COMMENT有关索引的信息(未在其自己的列中描述),例如,如果索引被禁用,则为
disabled。INDEX_COMMENT创建索引时使用
COMMENT属性为索引提供的任何注释。IS_VISIBLE索引对优化器是否可见。 请参阅第 10.3.12 节“不可见索引”。
EXPRESSIONMySQL 支持函数键部分(请参阅函数键部分),这会影响
COLUMN_NAME和EXPRESSION列对于非函数键部分,
COLUMN_NAME表示由键部分索引的列,而EXPRESSION为NULL。对于函数键部分,
COLUMN_NAME列为NULL,而EXPRESSION表示键部分的表达式。
备注
索引没有标准的
INFORMATION_SCHEMA表。 MySQL 列列表类似于 SQL Server 2000 为sp_statistics返回的内容,只是QUALIFIER和OWNER分别替换为CATALOG和SCHEMA。
还可以从 SHOW INDEX 语句获取有关表索引的信息。 请参阅第 15.7.7.23 节“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默认情况下,此表中会显示有关生成的不可见主键列的信息。 可以通过设置 show_gipk_in_create_table_and_information_schema = OFF 来隐藏此类信息。 有关更多信息,请参阅第 15.1.20.11 节“生成的不可见主键”。