• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • STATISTICS表

    STATISTICS表提供有关表索引的信息。

    STATISTICS代表表统计信息的列包含缓存的值。该information_schema_stats_expiry系统变量定义缓存表统计到期之前的一段时间。默认值为86400秒(24小时)。如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时将从存储引擎检索统计信息。要随时更新给定表的缓存值,请使用ANALYZE TABLE。要始终直接从存储引擎检索最新统计信息,请设置information_schema_stats_expiry=0。有关更多信息,请参见“优化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)。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。

      有关索引前缀的更多信息,请参见“列索引”和“ CREATE INDEX语句”。

    • PACKED

      指示密钥的包装方式。NULL如果不是这样。

    • NULLABLE

      包含YES是否该列可能包含NULL值,''否则包含。

    • INDEX_TYPE

      使用的索引方法(BTREEFULLTEXTHASHRTREE)。

    • COMMENT

      关于索引的信息未在其自己的列中描述,例如disabled是否禁用了索引。

    • INDEX_COMMENT

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

    • IS_VISIBLE

      索引是否对优化器可见。请参见“不可见索引”。

    • EXPRESSION

      MySQL 8.0.13和更高版本支持功能性关键部分(请参见 Functional Key Parts),这会影响COLUMN_NAMEEXPRESSION列:

      • 对于非功能键部分,COLUMN_NAME指示由键部分索引的列,且EXPRESSIONNULL
      • 对于功能键部件,COLUMN_NAME列为NULLEXPRESSION指示键部件的表达式。

    注意

    • 没有INFORMATION_SCHEMA索引的标准表。MySQL的列列表是类似于SQL Server 2000和的回报sp_statistics,但QUALIFIEROWNER与更换CATALOG,并SCHEMA分别。

    SHOW INDEX语句中也提供了有关表索引的信息。请参见“ 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