28.3.34 INFORMATION_SCHEMA STATISTICS 表
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。即使操作更新了表本身(例如,如果是MyISAM表),也可能出现失败。要获取更新后的分布统计信息,设置information_schema_stats_expiry=0。
The STATISTICS table has these columns:
-
TABLE_ Catalog该表中索引所属的目录名称。这一值始终为
def。 -
TABLE_SCHEMA该表中索引所属的schema(数据库)名称。
-
TABLE_NAME该表中索引名称。
-
NON_UNIQUE0 如果索引不能包含重复值,1 如果可以。
-
INDEX_SCHEMA该索引所属的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。Note前缀limits以字节为单位。然而,对于在
CREATE TABLE、ALTER TABLE和CREATE INDEX语句中的索引指定的前缀长度,非二进制字符串类型(CHAR、VARCHAR、TEXT)将被解释为字符数,而二进制字符串类型(BINARY、VARBINARY、BLOB)将被解释为字节数。在指定非二进制字符串列的前缀长度时,需要考虑这个问题,因为使用多字节字符集的列可能会导致问题。关于索引前缀的更多信息,请见第10.3.5节,“Column Indexes”和第15.1.15节,“CREATE INDEX Statement”。
-
PACKED表示键是如何打包的。
NULL如果不是。 -
可空包含
是如果列可能包含NULL值,否则包含''。 -
索引类型使用的索引方法(
BTREE、FULLTEXT、HASH、RTREE)。 -
注释索引中没有在其自己的列中描述的信息,例如
disabled如果索引被禁用。 -
索引注释创建索引时提供的任何注释,具有
COMMENT属性。 -
是否可见索引是否可见给优化器。请参阅第10.3.12节,“不可见索引”。
-
表达式MySQL 支持函数键部分(请参阅函数键部分),这影响了
列名和表达式列:-
对于非函数键部分,
列名指示被键部分索引的列,而表达式为NULL。 -
对于函数键部分,
列名列为NULL,而表达式指示键部分的表达式。
-
-
MySQL 中没有标准的
INFORMATION_ SCHEMA表用于索引。 MySQL 的列列表类似于 SQL Server 2000 对sp_ statistics的返回结果,except thatQUALIFIER和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节,“生成的不可见主键”。