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 节“不可见索引”。
EXPRESSION
MySQL 支持功能键部分(请参阅功能键部分),这会影响
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 节“生成的不可见主键”。