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_UNIQUE
0 如果索引不能包含重复值,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节,“生成的不可见主键”。