文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  INFORMATION_SCHEMA STATISTICS 表

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 的统计信息表。对于更新键分布的 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 TABLEALTER TABLECREATE INDEX 语句中索引规范的前缀长度解释为非二进制字符串类型(CHARVARCHARTEXT)的字符数和二进制字符串类型(BINARYVARBINARYBLOB)的字节数。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。

    有关索引前缀的其他信息,请参见 第 10.3.5 节“列索引”第 15.1.15 节“CREATE INDEX 语句”

  • PACKED

    表示键的打包方式。如果未打包,则为 NULL

  • NULLABLE

    如果列可以包含 NULL 值,则包含 YES;如果不包含,则包含 ''

  • 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 节“生成的不可见主键”