mysql statistics表_mysql8 参考手册-INFORMATION_SCHEMA STATISTICS表

MySQL的INFORMATION_SCHEMA.STATISTICS表提供了关于表索引的详细信息,包括索引类型、列名、基数等。ANALYZE TABLE用于更新统计信息。CARDINALITY列估算索引中唯一值的数量,影响优化器的索引选择。注意,前缀长度以字节计算,对于多字节字符集需特别考虑。不可见索引可通过IS_VISIBLE列判断。SHOW INDEX语句提供另一种查看表索引的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

STATISTICS代表表统计信息的 列包含缓存的值。该 information_schema_stats_expiry 系统变量定义缓存表统计到期之前的一段时间。默认值为86400秒(24小时)。如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时将从存储引擎检索统计信息。要随时更新给定表的缓存值,请使用ANALYZE TABLE。要始终直接从存储引擎检索最新统计信息,请设置 information_schema_stats_expiry=0。有关更多信息,请参见 第8.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 TABLE,ALTER TABLE和CREATE INDEX语句解释为非二进制串类型的字符数(CHAR, VARCHAR, TEXT对于二进制串类型),并且字节数(BINARY, VARBINARY, BLOB)。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。

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

PACKED

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

NULLABLE

包含YES该列是否包含NULL值,''如果不包含 。

INDEX_TYPE

使用的索引方法(BTREE, FULLTEXT,HASH, RTREE)。

COMMENT

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

INDEX_COMMENT

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

IS_VISIBLE

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

EXPRESSION

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

对于非功能键部分, COLUMN_NAME指示由键部分索引的列,且EXPRESSION 为NULL。

对于功能键部件,COLUMN_NAME 列为NULL并 EXPRESSION指示键部件的表达式。

笔记

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值