# 26.3.34 信息_模式统计表
这统计数据
table 提供有关表索引的信息。
中的列统计数据
表示表统计信息的值保存缓存值。这information_schema_stats_expiry
系统变量定义缓存表统计信息过期之前的时间段。默认值为 86400 秒(24 小时)。如果没有缓存统计信息或统计信息已过期,则在查询表统计信息列时从存储引擎中检索统计信息。要随时更新给定表的缓存值,请使用分析表
.要始终直接从存储引擎中检索最新的统计信息,请设置information_schema_stats_expiry=0
.有关详细信息,请参阅第 8.2.3 节,“优化信息_SCHEMA 查询”.
笔记
如果innodb_read_only
系统变量已启用,分析表
可能会失败,因为它无法更新数据字典中的统计表,这些表使用InnoDB
.为了分析表
更新密钥分布的操作,即使该操作更新了表本身(例如,如果它是MyISAM
桌子)。要获取更新的分布统计信息,请设置information_schema_stats_expiry=0
.
这统计数据
表有这些列:
表目录
包含索引的表所属的目录的名称。这个值总是
定义
.TABLE_SCHEMA
包含索引的表所属的架构(数据库)的名称。
TABLE_NAME
包含索引的表的名称。
NON_UNIQUE
如果索引不能包含重复项,则为 0,如果可以,则为 1。
INDEX_SCHEMA
索引所属的架构(数据库)的名称。
INDEX_NAME
索引的名称。如果索引是主键,则名称总是
基本的
.SEQ_IN_INDEX
索引中的列序号,从 1 开始。
COLUMN_NAME
列名称。另见描述
表达
柱子。整理
列在索引中的排序方式。这可以有值
一种
(上升),D
(下降),或空值
(未排序)。基数
对索引中唯一值数量的估计。要更新此号码,请运行
分析表
或(对于MyISAM
表)myisamchk -a.基数
是根据存储为整数的统计信息计算的,因此即使对于小表,该值也不一定准确。基数越高,MySQL 在进行连接时使用索引的机会就越大。子部分
索引前缀。也就是说,如果列仅被部分索引,则索引字符的数量,
空值
如果整个列都被索引。笔记
字首限制以字节为单位。但是,前缀长度对于索引规范
创建表
,更改表
, 和创建索引
语句被解释为非二进制字符串类型的字符数 (字符
,VARCHAR
,文本
) 和二进制字符串类型的字节数 (二进制
,变量
,斑点
)。在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。有关索引前缀的更多信息,请参阅第 8.3.5 节,“列索引”, 和第 13.1.15 节,“CREATE INDEX 语句”.
包装好的
指示如何打包密钥。
空值
如果不是。可空的
包含
是的
如果该列可能包含空值
价值观和''
如果不。INDEX_TYPE
使用的索引方法(
BTREE
,全文
,哈希
,RTREE
)。评论
未在其自己的列中描述的索引的信息,例如
禁用
如果索引被禁用。INDEX_COMMENT
为索引提供的任何评论都带有
评论
创建索引时的属性。IS_VISIBLE
索引是否对优化器可见。看第 8.3.12 节,“不可见索引”.
表达
MySQL 8.0.13 及更高版本支持功能关键部分(请参阅功能关键部件),这会影响到
COLUMN_NAME
和表达
列:对于非功能性关键部件,
COLUMN_NAME
表示由键部分索引的列,并且表达
是空值
.对于功能键部分,
COLUMN_NAME
列是空值
和表达
表示关键部分的表达式。
# 笔记
没有标准
INFORMATION_SCHEMA
索引表。MySQL 列列表类似于 SQL Server 2000 返回的sp_statistics
, 除了那个限定符
和所有者
被替换为目录
和架构
, 分别。有关表索引的信息也可从
显示索引
陈述。看第 13.7.7.22 节,“显示索引语句”.以下语句是等效的:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'tbl_name'
AND table_schema = 'db_name'
SHOW INDEX
FROM tbl_name
FROM db_name