-
Notifications
You must be signed in to change notification settings - Fork 111
STATISTICS
xiaoboluo768 edited this page Jun 7, 2020
·
2 revisions
- 该表提供查询关于索引的一些统计信息,一个索引列对应一行记录
- 该表为Memory引擎临时表
- 表定义语句
CREATE TEMPORARY TABLE `STATISTICS` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`NON_UNIQUE` bigint(1) NOT NULL DEFAULT '0',
`INDEX_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`INDEX_NAME` varchar(64) NOT NULL DEFAULT '',
`SEQ_IN_INDEX` bigint(2) NOT NULL DEFAULT '0',
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
`COLLATION` varchar(1) DEFAULT NULL,
`CARDINALITY` bigint(21) DEFAULT NULL,
`SUB_PART` bigint(3) DEFAULT NULL,
`PACKED` varchar(10) DEFAULT NULL,
`NULLABLE` varchar(3) NOT NULL DEFAULT '',
`INDEX_TYPE` varchar(16) NOT NULL DEFAULT '',
`COMMENT` varchar(16) DEFAULT NULL,
`INDEX_COMMENT` varchar(1024) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8
- 字段含义(部分字段)
- TABLE_CATALOG:该字段总是为def
- TABLE_SCHEMA:表示索引对应的表所属的数据库名称
- TABLE_NAME:表示索引所属的表名
- NON_UNIQUE:表示索引是否是非唯一索引
- INDEX_SCHEMA:表示索引所属的数据库名称
- INDEX_NAME:表示索引名称
- SEQ_IN_INDEX:由于STATISTICS表中记录的内容是一个索引列记录一行信息,所以,该字段用于记录索引列在索引中的顺序,从数字1开始计数
- COLUMN_NAME:索引涉及的字段名称
- COLLATION:索引的排序方式,有效值为:A(表示asc顺序排序)、D(desc倒序排序)、NULL(未排序)
- CARDINALITY:索引的基数值(唯一值比例),该值是基于内部的统计信息来对索引唯一值进行估算的,要更新估算值,可以使用语句analyze table(对于myisam表,可以使用myisamchk -a 命令行工具更新)
- SUB_PART:索引前缀长度。如果索引列只有部分被索引,则该字段值表示索引列的前缀字符数量(字节数量),如果整列被索引,则该字段值为NULL
* 注意:前缀限制数量是以字节为单位的。 所以,在使用CREATE TABLE,ALTER TABLE和CREATE INDEX语句创建前缀索引时,你需要考虑字符集的因素。
- NULLABLE:表示该字段是否包含NULL和空值,如果有,则该字段值为YES,否则为空。要注意,索引列只要允许为NULL,则该字段值就为YES
- INDEX_TYPE:索引类型,有效值为:BTREE、HASH、RTREE、FULLTEXT等(该字段为 "MySQL extension" 列)
- COMMENT:索引中没有描述的索引信息,例如:disabled表示该索引处于禁用状态。要注意:InnoDB的表的索引不支持关闭(MyISAM支持)
- INDEX_COMMENT:索引注释信息(该字段为 "MySQL extension" 列)
- 表记录内容示例
admin@localhost : information_schema 06:15:14> select * from STATISTICS where TABLE_NAME='sbtest1' limit 1\G;
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: sbtest
TABLE_NAME: sbtest1
NON_UNIQUE: 0
INDEX_SCHEMA: sbtest
INDEX_NAME: PRIMARY
SEQ_IN_INDEX: 1
COLUMN_NAME: id
COLLATION: A
CARDINALITY: 4392231
SUB_PART: NULL
PACKED: NULL
NULLABLE:
INDEX_TYPE: BTREE
COMMENT:
INDEX_COMMENT:
1 row in set (0.00 sec)
- PS:该表中的信息还可以使用show语句
# show index有两种语法,如下
root@localhost : information_schema 07:04:47> show index from sbtest1 from sbtest;
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| sbtest1 | 0 | PRIMARY | 1 | id | A | 7522488 | NULL | NULL | | BTREE | | |
| sbtest1 | 1 | k_1 | 1 | k | A | 713252 | NULL | NULL | | BTREE | | |
| sbtest1 | 1 | i_c | 1 | c | A | 4176349 | NULL | NULL | | BTREE | | |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)
root@localhost : information_schema 07:04:29> show index from sbtest.sbtest1;
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| sbtest1 | 0 | PRIMARY | 1 | id | A | 7522488 | NULL | NULL | | BTREE | | |
| sbtest1 | 1 | k_1 | 1 | k | A | 713252 | NULL | NULL | | BTREE | | |
| sbtest1 | 1 | i_c | 1 | c | A | 4176349 | NULL | NULL | | BTREE | | |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)
上一篇:SCHEMA_PRIVILEGES表 |下一篇:TABLES表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!