Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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。即使操作更新了表本身(例如,如果是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 TABLEALTER TABLECREATE INDEX语句中的索引指定的前缀长度,非二进制字符串类型(CHARVARCHARTEXT)将被解释为字符数,而二进制字符串类型(BINARYVARBINARYBLOB)将被解释为字节数。在指定非二进制字符串列的前缀长度时,需要考虑这个问题,因为使用多字节字符集的列可能会导致问题。

    关于索引前缀的更多信息,请见第10.3.5节,“Column Indexes”第15.1.15节,“CREATE INDEX Statement”

  • PACKED

    表示键是如何打包的。NULL如果不是。

  • 可空

    包含如果列可能包含NULL值,否则包含''

  • 索引类型

    使用的索引方法(BTREEFULLTEXTHASHRTREE)。

  • 注释

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

  • 索引注释

    创建索引时提供的任何注释,具有COMMENT属性。

  • 是否可见

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

  • 表达式

    MySQL 支持函数键部分(请参阅函数键部分),这影响了列名表达式列:

    • 对于非函数键部分,列名指示被键部分索引的列,而表达式NULL

    • 对于函数键部分,列名列为NULL,而表达式指示键部分的表达式。

  • MySQL 中没有标准的INFORMATION_ SCHEMA表用于索引。 MySQL 的列列表类似于 SQL Server 2000 对sp_ statistics的返回结果,except that 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节,“生成的不可见主键”