Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  The INFORMATION_SCHEMA STATISTICS Table

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 查询”

Note

如果启用了 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

    Note

    前缀 限制 以字节为单位测量。然而,前缀 长度 对于索引规范中的 CREATE TABLEALTER TABLECREATE INDEX 语句被解释为非二进制字符串类型 (CHARVARCHARTEXT) 的字符数和二进制字符串类型 (BINARYVARBINARYBLOB) 的字节数。在指定非二进制字符串列的前缀长度时,请考虑到这一点。

    有关索引前缀的更多信息,请参阅 第 10.3.5 节,“列索引”第 15.1.15 节,“CREATE INDEX 语句”

  • PACKED

    指示键如何打包。NULL 如果它不是。

  • NULLABLE

    包含 YES 如果列可能包含 NULL 值,否则为空。

  • INDEX_TYPE

    索引方法 (BTREEFULLTEXTHASHRTREE)。

  • COMMENT

    索引的信息,不在其自己的列中描述,例如 disabled 如果索引被禁用。

  • INDEX_COMMENT

    在创建索引时提供的注释,带有 COMMENT 属性。

  • IS_VISIBLE

    索引是否对优化器可见。参阅 第 10.3.12 节,“不可见索引”

  • EXPRESSION

    MySQL 支持函数键部分(参阅 函数键部分),这影响了 COLUMN_NAMEEXPRESSION 列:

    • 对于非函数键部分,COLUMN_NAME 指示键部分索引的列,EXPRESSIONNULL

    • 对于函数键部分,COLUMN_NAME 列为 NULLEXPRESSION 指示键部分的表达式。

注意

  • 没有标准的 INFORMATION_SCHEMA 表用于索引。MySQL 列列表类似于 SQL Server 2000 对 sp_statistics 的返回结果,除了 QUALIFIEROWNER 被分别替换为 CATALOGSCHEMA

表索引信息也可以从 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 节,“生成的不可见主键”